个性化阅读
专注于IT技术分析

超简单!mongodb文档(document)的增删改查命令行操作和图解

本节开始学习mongodb文档的增删改查了,如果你还不清楚mongodb的数据类型、数据库和集合的创建和删除,可以参考:mongodb数据建模、数据类型、增删数据库和集合操作,因为之后会时不时使用到相关的命令。

一、插入文档

文档相当于一条数据,文档是插入到集合中的,MongoDB使用insert()或save()方法插入一个文档。insert()的使用语法为:db.collection_name.insert(document),document使用类似JSON的语法,相当于一个对象。

添加文档例子:

> db.post.insert({
 title: "La Oreja De Van Gogh",
 description: "The Ear Of Van Gogh",
 by: "Once",
 url: "http://www.srcmini02.com",
 tags: ["mongodb", "espana"],
 likes: 12
 })
插入一个文档

这里post是我们的集合名,与之前的创建数据库一样,如果集合在数据库中不存在,那么MongoDB将创建这个集合,然后向其中插入一个文档。

在插入的文档中,如果我们没有指定_id参数,那么MongoDB将为该文档分配一个惟一的ObjectId。

_id是一个集合中每个文档惟一的12字节十六进制数字,12个字节划分如下

_id: ObjectId(4个字节 时间戳, 3个字节 机器ID, 2个字节 进程ID, 3个字节 增量器)

要在一个查询中插入多个文档,可以在insert()命令中传递一个文档数组。

>db.post.insert([
    {
       title: 'MongoDB安装', 
       description: 'The Price Of Salt',
       by: '半瓶木',
       url: 'http://www.srcmini02.com',
       tags: ['mongodb', 'database', 'NoSQL'],
       likes: 100
    },
     
    {
       title: '增删改查', 
       description: "不小心删库了",
       by: 'Once',
       url: 'http://www.srcmini02.com',
       tags: ['mongodb', 'database', 'NoSQL'],
       likes: 20, 
       comments: [  
          {
             user:'user1',
             message: '如何评论',
             dateCreated: new Date(2020,11,10,2,35),
             like: 0 
          }
       ]
    }
 ])

插入文档还可以使用db.post.save(document),如果没有在文档中指定_id,那么save()方法将与insert()方法工作相同。如果指定了_id,那么它将替换包含_id的文档的整个数据,如save()方法中所指定的那样。

二、查询文档

要从MongoDB集合查询数据,需要使用MongoDB的find()方法,方法将以非结构化的方式显示所有文档,使用语法为:db.document_name.find(),要以格式化的方式显示结果,可以使用pretty()方法,即db.document_name.find().pretty(),例如:

where子句查询

除了find()方法之外,还有findOne()方法,它只返回第一个文档。

1、查询的where子句

要根据某些条件查询文档,可以使用以下where子句操作。

操作 语法 例子 等价的SQL
等于 {<key>:<value>} db.post.find({“by”:”once”}).pretty() where by = ‘once’
小于 {<key>:{$lt:<value>}} db.post.find({“likes”:{$lt:50}}).pretty() where likes < 50
小于或等于 {<key>:{$lte:<value>}} db.post.find({“likes”:{$lte:50}}).pretty() where likes <= 50
大于 {<key>:{$gt:<value>}} db.post.find({“likes”:{$gt:50}}).pretty() where likes > 50
大于或等于 {<key>:{$gte:<value>}} db.post.find({“likes”:{$gte:50}}).pretty() where likes >= 50
不等于 {<key>:{$ne:<value>}} db.post.find({“likes”:{$ne:50}}).pretty() where likes != 50
where子句查询

2、AND与查询

在find()方法中,如果你通过’’分隔多个键来传递它们,那么MongoDB将其视为AND与条件,下面是AND与的基本语法

>db.post.find(
    {
       $and: [
          {key1: value1}, {key2:value2}
       ]
    }
 ).pretty()
and子句查询

3、OR或查询

要基于OR或条件查询文档,需要使用$or关键字,下面是OR的基本语法

>db.post.find(
    {
       $or: [
          {key1: value1}, {key2:value2}
       ]
    }
 ).pretty()
OR子句查询

4、同时使用AND和OR查询

下面的例子将显示likes大于10的文档,相当于SQL where子句:’where like >10 AND (by = ” OR title = ”)’

同时使用and和or子句

三、更新文档

MongoDB的update()和save()方法用于将文档更新到集合中。update()方法更新现有文档中的值,而save()方法用在save()方法中传递的文档替换现有文档。

1、update()方法

Update方法的使用语法为:db.collection_name.update(查询标准,更新的数据),例如:

db.post.update({'title':'AAA'},{$set:{'title':'BBB'}})

默认情况下,MongoDB只更新一个文档。要更新多个文档,需要将参数’multi’设置为true,如:

db.post.update({'title':'AAA'}, {$set:{'title':'BBB'}},{multi:true})

2、save()方法

save()方法用在save()方法中传递的新文档替换现有文档,使用语法为:db.collection_name.save(_id:ObjectId(), new_data)。

四、删除文档

MongoDB的remove()方法用于从集合中删除文档,方法接受两个参数,一个是删除标准,为可选项,不设置的话会删除所有;第二个是一个标记,设置为true或1,则只删除一个。

例如,下面的删除语句删除所有标题为’AA’的文档:

db.post.remove({'title':'AA'})
赞(0)
未经允许不得转载:srcmini » 超简单!mongodb文档(document)的增删改查命令行操作和图解

评论 抢沙发

评论前必须登录!