码迷,mamicode.com
首页 > 数据库 > 详细

MongoDB常用基本操作

时间:2018-02-02 18:32:39      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:new   指定   部分   批量创建   操作符   集合   font   第一个   开始   

一、基础

MongoDB不需要像关系型数据库那样需要显式创建数据库,可以直接使用use语句创建:

> use foo

将文档插入集合中使用insert方法:

> db.blog.insert(post)

查找使用find或者findOne方法:

> db.blog.find()
> db.blog.findOne()

更新使用update方法,接受两个参数。第一个参数用于定位,第二个参数传递更新后的文档。在此之前需要用var方法取出原纪录:

> var updatedpost = db.blog.findOne({title:Post})
> updatedpost.content = New Content
> db.blog.update({title: Post}, updatedpost)

删除使用remove方法:

> db.blog.remove({title:Post})

 

二、创建、更新和删除

1. 批量创建:

> db.batchInsert([{‘a‘:1}, {‘a‘:2}, {‘a‘:3}])

 

2. 修改器

$inc:数值增加

> db.data.update({_id:1}, {$inc‘:{times:1}})

$set:指定字段值

> db.data.update({_id:1}, {$set:{title:new title}})

$unset:删除字段

> db.data.update({_id:1}, {$unset: {title:1}})

$push:添加字段,将新字段的值保存为数组添加到文档中

> db.data.update({_id:1}, {$push: {comments:comment1}})

$addToSet和$each组合:添加多个不同的值,如果已存在就不再添加

> db.data.update({_id:1}, {$addToSet: {email: {$each: [‘123@a.com‘, ‘123@b.com‘, ‘123@c.com‘]}}})

 $pull:删除特定元素,仅当key的值为数组时可用,删除数组中值为value的元素

> db.blog.update({}, {$pull:{key:value}})

$定位符:用于定位符合要求的文档并进行修改。这里$用于替代已查找出的comment的数组中John所在的位置,并用$set进行更新

> db.blog.update({comment.author:John}, {$set: {comment.$.author:Jack}})

 

3. 使用upsert

upsert可以对于不存在的元素进行创建,对于已存在的元素不操作。在update中位于第三个参数,将其改为true。

> db.collection.update({key:3}, {$inc:{key:1}}, true)

如果集合中存在一条key为3的文档,该操作会将key为3的值改为4;如果不存在,则会创建一条key为4的文档。另外,如果再次执行该操作,会再次生成一条key为4的文档。

 

4.更新多条文档

update方法的第4个参数控制是否更新多条符合条件的记录。设定为true,则会更新多条匹配的记录;设定为false,则只更新一条匹配的记录。

 

三、查找

查找使用find或者findOne(找出一条记录)。如果希望只返回特定的几个字段,则可如下操作:

> db.blog.find({}, {username: 1, post: 1})

这样在输出中就会只包含username和post字段。然而,_id字段是默认返回的,需要在find的参数中手动指定为0才能不返回。

1.比较操作符

$lt, $gt, $lte, $gte, $ne分别对应<、>、<=、>=、!= 五个比较操作符,可以如下操作:

> db.collection.find({score: {$gte: 60, $lte: 70}}) 

这样可以找出分数在60到70之间的记录。

2.$or、$in

$or用于选择判断条件,满足一条即可。$in用于值选择,判断值是否在数组之内。

> db.collection.find({number: {$in: [1, 2, 3]}})
> db.collection.find({$or: [{‘number‘: 1}, {‘age‘: 20}]})

类似的,还有$nin、$not和$and。

3.$exists

$exists用来判断字段是否存在。true为存在,false为不存在。下面操作用来寻找值为null的记录:

> db.collection.find({key: {$in : [null], $exists: true}})

没有等于操作符,所以这里用in代替。如果不加上后面的exists操作符,则会返回所有值为null以及key字段不存在的记录。

4.数组查找

用$all通过多个元素查找数组匹配。以下操作会找出key的值包含value1和value2的数组。

> db.collection.find({key: {$all: [‘value1‘, ‘value2‘]}})

如果不加$all,则变成了精确匹配。如果想要通过位置寻找元素,则需要在key中添加下标。

> db.collection.find({key.0: value1}) 

此外,用$size可以查询数组长度。

> db.collection.find({key: {$size: 3}})

用$slice可以查询数组的部分元素。下面的操作返回数组中从5号开始的5个元素。

> db.collection.find({author:John}, {comment: {$slice: [5, 5]}}) 

5.查询内嵌文档

用$elemMatch匹配文档中部分元素。下面的操作用于找出作者为John的5分评论,如果不加上elemMatch,则如果文档中还有其他的键值对,则不能匹配。

> db.post.find({comment: {$elemMatch: {author: John, score: 5}}})

6.结果处理

$limit限值结果数量,$skip跳过部分结果,$sort对结果排序。

> db.collection.limit(3)
> db.collection.skip(3)
> db.collection.sort({_id: 1, key: -1})

 

MongoDB常用基本操作

标签:new   指定   部分   批量创建   操作符   集合   font   第一个   开始   

原文地址:https://www.cnblogs.com/00986014w/p/8395559.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!