mongodb——文档操作

文档基本CRUD

文档(document)的数据结构是和JSON类似的BSON

文档的插入

单个文档的插入

使用insert()或save()方法向集合插入文档,语法如下:

db.collection.insert(
	<document or array of ducuments>,
	{
		writeConcern: <document>,
		ordered: <boolean>
	}
)
Parameter Type Description
document document or array 要插入到集合中的文档或文档数组
writeConcern document
ordered bolean 如果为真,则按顺序插入数组中的文档,如果其中一个文档出现错误,MongoDB将返回而不处理数组中的其余文档。如果为假,则执行无序插入,如果其中一个文档出现错误,则继续处理数组中的主文档。2.6+默认为true

【示例】

向comment的集合中插入一条测试数据

> db.comment.insert({"articleId": 10000, "content": "今天天气真好,阳光明媚", "userId": 1001, "nickname": "Rose", "createdatetime": new Date(), "lukenum": NumberInt(10), "state": null})
WriteResult({ "nInserted" : 1 })

批量插入

语法:

db.collection.insertMany(
	[<document 1>, <document 2>, ...]
	{
		writeConcern: <document>,
		ordered: <boolean>
	}
)

文档的基本查询

查询数据的语法格式如下:

db.collection.find(<query>, [projection])

参数:

Parameter Type Description
query document
projection document

【实例】

查询所有

> db.comment.find()
> db.comment.find({})

这里你会发现每条文档都会有一个_id字段,这个相当于我们原来关系型数据表的主键。当你插入文档记录时没后指定该字段,MongoDB会自动创建,类型为ObjectId。

如果我们在插入文档记录时指定该字段也可以,其类型可以时ObjectID类型,也可以是MongoDB支持的任意类型。

如果我想按一定条件来查询,比如我想查询userid为1003的记录。

> db.comment.find({userid: '1003'})

如果你只需要返回符合条件的第一条数据,我们可以使用findOne命令来实现,语法和find一样。

> db.comment.findOne()
> db.comment.findOne({userid: 10003})

投影查询

如果要查询结果返回部分字段,则需要使用投影查询(不显示所有字段,只显示指定的字段)

文档的更新

主要关注前四个参数即可

【实例】

覆盖的修改

> db.comment.update({_id: 1}, {likenum: NUmberInt(1001)})

执行后发现,这条文档除了likenum其它字段都没有了

局部修改

我们使用修改器$set来实现

> db.comment.update({_id: 1}, {$set:{likenum: NUmberInt(1001)}})

批量修改

// 默认值修改第一条数据
> db.comment.update({_id: 1}, {$set:{likenum: NUmberInt(1001)}})
// 修改所有符合条件的数据
> db.comment.update({_id: 1}, {$set:{likenum: NUmberInt(1001)}}, {mutli: true})

新版本支持updateMany()

删除文档

删除文档语法结构:

db.collection.remove()

将数据全部删除

db.collection.remove({})

删除_id=1的记录

db.collection.remove({_id: "1"})

文档的分页查询

统计查询

统计查询使用count()方法,语法如下:

db.collection.count(query, options)

参数:

Parameter Type Description
query document 查询选择条件
options document 可选。用于修改计数的外选项

分页列表查询

可以使用limit方法来读取指定数量的数据,使用skip()方法来跳过指定数量的数据。

基本语法如下所示:

> db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

排序查询

sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用1和-1指定排序的方式,其中1为升序排列,而-1是用于降序排列。

语法如下所示:

db.COLLECTION.find().sort({key:1})

skip、limit、sort放在一起执行的时候,执行的顺序是sort、skip、limit,和命令编写顺序无关

文档的更多查询

正则的复杂条件查询

MongoDB的模糊查询是通过正则表达式的方式实现的,格式为:

db.COLLECTION.find({fields: /正则表达式/})

比较查询

db.COLLECTION.find({fields: {$gt: value}})
db.COLLECTION.find({fields: {$lt: value}})
db.COLLECTION.find({fields: {$gte: value}})
db.COLLECTION.find({fields: {$gte: value}})
db.COLLECTION.find({fields: {$ne: value}})

包含查询

包含 $in

不包含 $nin

条件查询

我们如果需要查询同时满足两个以上条件,需要使用$and操作符将条件进行关联。

格式为:

$and: [{}, {}, {}]

如果两个以上条件之间是或者的关系,我们使用操作符$or

格式为:

$or: [{},{},{}]
原文地址:https://www.cnblogs.com/Gazikel/p/15437898.html