好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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:  '//HdhCmsTestjb51.net' ,    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:  '//HdhCmsTestjb51.net' ,    tags: [ 'mongodb' ,  'database' ,  'NoSQL' ],    likes: 100 }, {    title:  'NoSQL Database' ,     description:  'NoSQL database doesn' t have tables ',    by: ' tutorials point ',    url: ' //HdhCmsTestjb51.net ',    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()方法。


删除文档: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() > 

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

语法:

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

>db.COLLECTION_NAME.find() 

 

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

2.pretty() 方法

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

语法:

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

 

例子:

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


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

RDBMS Where子句和MongoDB等同语句.

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

操作

语法

例子

RDBMS 等同

Equality

key

db.mycol.find({"by":"tutorials point"}).pretty()

where by = 'tutorials point'

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


3.AND 在MongoDB中用法

 

语法:

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

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

 

例子

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

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

对于上面给出的例子相当于where子句 ' where by='yiibai' AND id="codetool">

 

例子

下面给出的例子将显示所有的教程,由'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" :  "//HdhCmsTestjb51.net" ,     "tags" : [ "mongodb" ,  "database" ,  "NoSQL" ],     "likes" :  "100"  } > 

5.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" :  "//HdhCmsTestjb51.net" ,     "tags" : [ "mongodb" ,  "database" ,  "NoSQL" ],     "likes" :  "100"  } > 

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

1.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 }) 


2.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中对文档的增删查改基本操作方法总结的详细内容...

  阅读:25次