MongoDB入门学习(2)增删改查

来源:互联网 发布:安卓机顶盒软件 编辑:程序博客网 时间:2024/05/21 22:39

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]}})// 查询包含26的文档(查不到)db.c.find({like:{$all:[2,6]}})

(8)$in
等同于MySQL的in

// 查询所有age 等于2 或者等于3的文档db.c.find({age:{$in:[2,3]}})

(9) ninin相反

// 查询所有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"})

原创粉丝点击