MongoDB入门学习
1. 集合插入文档
插入操作比较的简单
doc={name:""}
db.c.insert(doc)
insert()接受一个BSON格式的数据进行插入。
2.更新文档
更新数据分为全更新和部分字段的更新。
更新语句如下:
db.collection.update(criteria,objNew,upsert,multi)
criteria更新的条件:
objNew更新的内容:
upsert:取值为0或1,表示如果你想更新的语句不存在则插入这条语句。
multi:取值为0或1,表示符合条件的所有文档是否全更新。
2.1 全更新
例子:
db.c1.update({name:"name1"},{age:1})
使用上例子会将原本name = name1的这个文档整体替换为只有这{age:1}一个key-value的文档。所谓的全更新指的是将整个文档进行替换。
2.2 set 部分更新
例子:
db.c1.update({name:"name1"},{$set:{age:1}})
使用上例子,会将name = name1的这个文档内的age更新为1,另外如果这个age不存在,则会将age添加到这个文档中。
2.3 inc加加减减
db.c1.update({name:"name1"},{$inc:{age:1}})
将name =name1 的文档的age字段增加1。同样如果此文档的age字段不存在,也会给当前的文档添加一个age子弹。
减一就是-1
2.4 unset 删除字段
db.c1.update({name:"name1"},{$unset:{age:1}})
删除name =name1 的文档的age字段
3 删除文档
db.c.remove({name:"name1"})
上例子删除name= name1 的文档,remove()函数接受一个BSON作为删除的条件
db.c.remove({})
上例子是将真个文档全删除。
4. 查询
(1).
db.c.find()
上例子是查询的最简单函数,他返回整个集合的前20个文档信息。
(2).
db.c.findOne()
上例子返回集合的第一个文档。
(3)
db.c.find({name:"name1"})
同样,查询也接受一个BSON作为查询的条件。但是上述的查询会将满足条件的文档的所有key-value值返回给我们,如果我们不想要的话,可以通过0,1指定,想要返回的字段。如下:
(4)
db.c.find({name:"name1"},{age:0})
在上例子中find()函数的第二个参数,接受一个BSON 指定age字段不显示。这样返回的信息就不包含age字段。注意,默认返回的信息是包含_id的。
(5)
查询使用条件表达式:
大于(gt),小于(lt),大于等于(gte),小于等于(lte),不等于(ne)
// 查询age大于10的
db.c.find({age:{$gt:10}})
// 查询age小于10的
db.c.find({age:{$lt:10}})
// 查询age大于等于10的
db.c.find({age:{$gte:10}})
// 查询age小于等于10的
db.c.find({age:{$lte:10}})
// 查询age不等于10的
db.c.find({age:{$ne:10}})
(6)
对查询结果进行统计(count),排序(sort),分页(skip,limit)
// 返回整个集合内文档的数量
db.c.count()
// 返回满足这个查询条件的文档的总数
db.c.find({name:"name1"}).count()
// 根据age字段对满足条件的查询结果进行排序(1)正序 /(-1)逆序
db.c.find({name:"name1"}).sort({age:1})
// 限定查询从2+1个文档开始进行查询
db.c.find().skip(2)
// 限定了只返回两条文档
db.c.find().limit(2)
// 限定了从第三个文档开始返回两个文档
db.c.find().skip(2).limit(2)
注意:skip和limit限定查询的数量之后,集合中有多少满足就返回多少。
另外再使用了skip或者limit之后查询的结果再使用count()方法得到的是整个集合的文档的数量,不再是加了限制之后的文档的数量。如果想得到加了skip()和limit()限定条件之后查询到的文档的数量需要用到一下语句
// 返回实际得到的文档的数量
db.c.find().skip(2).limit(100).count(1)
(7) $all
查询数组的包含关系,只要有一个不含就不返回
// 插入一条包含数组的文档
db.c.insert({name:"name",like:[1,2,3,4]})
// 查询like 字段内包含2并且包含4的文档,(能查到)
db.c.find({like:{$all:[2,4]}})
// 查询包含2和6的文档(查不到)
db.c.find({like:{$all:[2,6]}})
(8)$in
等同于MySQL的in
// 查询所有age 等于2 或者等于3的文档
db.c.find({age:{$in:[2,3]}})
(9) nin同 in相反
// 查询所有age 不等于2 并且不等于3的文档
db.c.find({age:{$nin:[2,3]}})
(10)$or
功能等同于MySQL的or
// 查询所有name为name1 或者age为2的文档
db.c.find({$or:[{name:"name1"},{age:2}]})
(11)$nor
功能等or相反
// 查询所有name不为name1 或者age不为2的文档
db.c.find({$nor:[{name:"name1"},{age:2}]})
(12)$exists
获取集合内不存在或者存在某个字段的文档
// 查询c集合内所有存在age字段的文档
db.c.find({age:{$exists:1}})
(13)
`mongodb
//多条件查询
db.c.find({age:3,name:"name3"})