博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB (八) MongoDB 文档操作
阅读量:5140 次
发布时间:2019-06-13

本文共 6589 字,大约阅读时间需要 21 分钟。

一. MongoDB 插入文档

insert() 方法

要插入数据到 MongoDB 集合,需要使用 MongoDB 的  insert() 或 save() 方法。

语法

insert() 命令的基本语法如下:

>db.COLLECTION_NAME.insert(document)

例子

>db.mycol.insert({   _id: ObjectId(7df78ad8902c),   title: 'MongoDB Overview',    description: 'MongoDB is no sql database',   by: 'tutorials point',   url: 'http://www.yiibai.com',   tags: ['mongodb', 'database', 'NoSQL'],   likes: 100})

这里 mycol  是集合的名称,如前面的教程中创建。如果集合在数据库中不存在,那么MongoDB 将创建此集合,然后把它插入文档。插入文档中,如果我们不指定_id参数,然后MongoDB 本文档分配一个独特的ObjectId。

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

_id: ObjectId(4 bytes timestamp, 3 bytes machine id, 2 bytes process id, 3 bytes incrementer)

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

示例

>db.post.insert([{   title: 'MongoDB Overview',    description: 'MongoDB is no sql database',   by: 'tutorials point',   url: 'http://www.yiibai.com',   tags: ['mongodb', 'database', 'NoSQL'],   likes: 100},{   title: 'NoSQL Database',    description: 'NoSQL database doesn't have tables',   by: 'tutorials point',   url: 'http://www.yiibai.com',   tags: ['mongodb', 'database', 'NoSQL'],   likes: 20,    comments: [          {         user:'user1',         message: 'My first comment',         dateCreated: new Date(2013,11,10,2,35),         like: 0       }   ]}])

要插入文件,也可以使用  db.post.save(document)。 如果不指定_id在文档中,然后将其 save() 方法和 insert()方法工作一样。如果指定_id,它会替换整个数据文件,其中包含_id 指定save()方法。

二. MongoDB 查询文档

find() 方法

要从MongoDB 查询集合数据,需要使用MongoDB 的 find() 方法。

语法

基本的find()方法语法如下

>db.COLLECTION_NAME.find()

find() 方法将在非结构化的方式显示所有的文件。

pretty() 方法

结果显示在一个格式化的方式,可以使用 pretty() 方法.

语法:

>db.mycol.find().pretty()

例子

>db.mycol.find().pretty(){   "_id": ObjectId(7df78ad8902c),   "title": "MongoDB Overview",    "description": "MongoDB is no sql database",   "by": "tutorials yiibai",   "url": "http://www.yiibai.com",   "tags": ["mongodb", "database", "NoSQL"],   "likes": "100"}>

除了find() 方法外,还有一个 findOne() 法,返回一个文件。

RDBMS Where子句和MongoDB等同语句

要查询文件的一些条件的基础上,可以使用下面的操作

操作 语法 例子 RDBMS 等同
Equality {<key>:<value>} db.mycol.find({"by":"tutorials yiibai"}).pretty() where by = 'tutorials yiibai'
Less Than {<key>:{$lt:<value>}} db.mycol.find({"likes":{$lt:50}}).pretty() where likes < 50
Less Than Equals {<key>:{$lte:<value>}} db.mycol.find({"likes":{$lte:50}}).pretty() where likes <= 50
Greater Than {<key>:{$gt:<value>}} db.mycol.find({"likes":{$gt:50}}).pretty() where likes > 50
Greater Than Equals {<key>:{$gte:<value>}} db.mycol.find({"likes":{$gte:50}}).pretty() where likes >= 50
Not Equals {<key>:{$ne:<value>}} db.mycol.find({"likes":{$ne:50}}).pretty() where likes != 50

AND 在MongoDB中用法

语法:

在  find() 方法,如果通过多个键分离',',那么 MongoDB 处理 AND 条件。AND 基本语法如下所示:

>db.mycol.find({key1:value1, key2:value2}).pretty()

例子

下面给出的例子将显示所有的教程,标题是“MongoDB Overview“

>db.mycol.find({"by":"tutorials yiibai","title": "MongoDB Overview"}).pretty(){   "_id": ObjectId(7df78ad8902c),   "title": "MongoDB Overview",    "description": "MongoDB is no sql database",   "by": "yiibai",   "url": "http://www.yiibai.com",   "tags": ["mongodb", "database", "NoSQL"],   "likes": "100"}>

对于上面给出的例子相当于where子句 ' where by='yiibai' AND title='MongoDB Overview' , 可以通过任意数量的键值对在 find 子句。

MongoDB中OR

语法:

OR条件的基础上要查询文件,需要使用$or关键字。OR 基本语法如下所示: 

>db.mycol.find(   {      $or: [         {key1: value1}, {key2:value2}      ]   }).pretty()

例子

下面给出的例子将显示所有的教程,由'yiibai' 所写或标题是“MongoDB Overview '

>db.mycol.find({$or:[{"by":"yiibai"},{"title": "MongoDB Overview"}]}).pretty(){   "_id": ObjectId(7df78ad8902c),   "title": "MongoDB Overview",    "description": "MongoDB is no sql database",   "by": "yiibai",   "url": "http://www.yiibai.com",   "tags": ["mongodb", "database", "NoSQL"],   "likes": "100"}>

AND 和 OR 一起使用

例子

下面给出的例子将显示有像的文件大于100,其标题是“MongoDB Overview'或者是'yiibai' 。等效于 SQL where子句 为 'where likes>10 AND (by = 'yiibai' OR title = 'MongoDB Overview')'

>db.mycol.find("likes": {$gt:10}, $or: [{"by": "yiibai"}, {"title": "MongoDB Overview"}] }).pretty(){   "_id": ObjectId(7df78ad8902c),   "title": "MongoDB Overview",    "description": "MongoDB is no sql database",   "by": "yiibai",   "url": "http://www.yiibai.com",   "tags": ["mongodb", "database", "NoSQL"],   "likes": "100"}>

三. MongoDB 更新文档

MongoDB的 update() 和 save() 方法用于更新文档的集合。 update()方法更新现有的文档值,而替换现有的文档通过的文件中 save() 方法。

MongoDB Update() 方法

update()方法更新现有文档值。

语法:

update() 方法的基本语法如下

>db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA, UPDATED_DATA)

例子

考虑以下数据mycol集合。

{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"}{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"}

下面的例子将设置新标题'MongoDB Overview'的文件,更新其标题是“New MongoDB Tutorial”

>db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}})>db.mycol.find(){ "_id" : ObjectId(5983548781331adf45ec5), "title":"New MongoDB Tutorial"}{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Overview"}>

MongoDB默认将只更新单一的文件,来更新多个你需要设置参数置'multi' 为true

>db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}},{multi:true})

MongoDB Save() 方法

 save() 方法替换现有的文档和通过新的文档 save() 方法

语法

MongoDB 的 save() 方法的基本语法如下:

>db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})

例子

下面的例子将取代文件具有_id为 '5983548781331adf45ec7'

>db.mycol.save(   {      "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai New Topic", "by":"Yiibai"   })>db.mycol.find(){ "_id" : ObjectId(5983548781331adf45ec5), "title":"Yiibai New Topic", "by":"Yiibai"}{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Overview"}>

四. MongoDB 删除文档

remove() 方法

MongoDB的 remove() 方法用于从集合中删除文档。remove() 方法接受两个参数。第一个是删除criteria ,第二是justOne标志:

  1. deletion criteria :(可选)删除标准,根据文件将被删除。

  2. justOne : (可选)如果设置为true或1,然后只删除一个文件。

语法:

基本语法remove()方法如下

>db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)

例子

考虑以下数据mycol集合。

{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"}{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Overview"}

下面的例子将删除所有的文件,其标题是 'MongoDB Overview'

>db.mycol.remove({'title':'MongoDB Overview'})>db.mycol.find(){ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Overview"}>

删除只有一个

如果有多个记录且要删除的只有第一条记录,那么设置remove()方法中justOne参数

>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)

删除所有文件

如果不指定删除条件,然后MongoDB将从集合中删除整个文件。这相当于SQL的truncate命令。

>db.mycol.remove()>db.mycol.find()>

 

转载于:https://www.cnblogs.com/longshiyVip/p/4770881.html

你可能感兴趣的文章
spring之生命周期
查看>>
javascript总结
查看>>
2019-给你六个建议
查看>>
转:HTTPS 协议
查看>>
SQL语句(十八)—— 存储过程
查看>>
html笔记20171231
查看>>
Jquery -EasyUI
查看>>
Python爬虫设置Headers
查看>>
Mysql Java 驱动安装
查看>>
使用css3中calc()进行自适应布局
查看>>
ADA程序实例(运算符重载)
查看>>
【HDU5730】Shell Necklace(多项式运算,分治FFT)
查看>>
【LOJ#6041】事情的相似度(后缀自动机)
查看>>
【BZOJ5298】[CQOI2018]交错序列(动态规划,矩阵快速幂)
查看>>
数据库基础和断点调试
查看>>
git简单使用教程
查看>>
反射设置当前窗体所有控件的Text
查看>>
python之路--day15---软件开发目录规范
查看>>
多文件上传并表单提交
查看>>
flutter基础
查看>>