MongoDB中对文档的增删查改基本操作方法总结
插入文档:insert()方法
要插入数据到MongoDB集合,需要使用MongoDB的 insert()或save()方法。
语法:
insert()命令的基本语法如下:
>db.COLLECTION_NAME.insert(document)
例子:
>db.mycol.insert({ _id:ObjectId(7df78ad8902c), title:'MongoDBOverview', description:'MongoDBisnosqldatabase', by:'tutorialspoint', url:'https://www.nhooo.com', tags:['mongodb','database','NoSQL'], likes:100})
这里mycol 是集合的名称,如前面的教程中创建。如果集合在数据库中不存在,那么MongoDB将创建此集合,然后把它插入文档。
插入文档中,如果我们不指定_id参数,然后MongoDB本文档分配一个独特的ObjectId。
_id是12个字节的十六进制数,唯一一个集合中的每个文档。12个字节被划分如下:
_id:ObjectId(4bytestimestamp,3bytesmachineid,2bytesprocessid,3bytesincrementer)
要插入单个查询的多个文档,可以传递一个数组insert()命令的文件。
示例:
>db.post.insert([{ title:'MongoDBOverview', description:'MongoDBisnosqldatabase', by:'tutorialspoint', url:'https://www.nhooo.com', tags:['mongodb','database','NoSQL'], likes:100},{ title:'NoSQLDatabase', description:'NoSQLdatabasedoesn'thavetables', by:'tutorialspoint', url:'https://www.nhooo.com', tags:['mongodb','database','NoSQL'], likes:20, comments:[ { user:'user1', message:'Myfirstcomment', dateCreated:newDate(2013,11,10,2,35), like:0 } ]}])
要插入文件,也可以使用 db.post.save(document)。如果不指定_id在文档中,然后将其save()方法和insert()方法工作一样。如果指定_id,它会替换整个数据文件,其中包含_id指定save()方法。
删除文档:remove()方法
MongoDB的remove()方法用于从集合中删除文档。remove()方法接受两个参数。第一个是删除criteria,第二是justOne标志:
(1)deletioncriteria:(可选)删除标准,根据文件将被删除。
(2)justOne:(可选)如果设置为true或1,然后只删除一个文件。
语法:
基本语法remove()方法如下
>db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)
例子:
考虑以下数据mycol集合。
{"_id":ObjectId(5983548781331adf45ec5),"title":"MongoDBOverview"}{"_id":ObjectId(5983548781331adf45ec6),"title":"NoSQLOverview"}{"_id":ObjectId(5983548781331adf45ec7),"title":"YiibaiOverview"}
下面的例子将删除所有的文件,其标题是'MongoDBOverview'
>db.mycol.remove({'title':'MongoDBOverview'})>db.mycol.find(){"_id":ObjectId(5983548781331adf45ec6),"title":"NoSQLOverview"}{"_id":ObjectId(5983548781331adf45ec7),"title":"YiibaiOverview"}>
删除只有一个。
如果有多个记录且要删除的只有第一条记录,那么设置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":"MongoDBOverview", "description":"MongoDBisnosqldatabase", "by":"tutorialspoint", "url":"https://www.nhooo.com", "tags":["mongodb","database","NoSQL"], "likes":"100"}>
除了find()方法外,还有一个findOne()法,返回一个文件。
RDBMSWhere子句和MongoDB等同语句.
要查询文件的一些条件的基础上,可以使用下面的操作
3.AND在MongoDB中用法
语法:
在 find()方法,如果通过多个键分离',',那么MongoDB处理AND条件。AND基本语法如下所示:
>db.mycol.find({key1:value1,key2:value2}).pretty()
例子
下面给出的例子将显示所有的教程,标题是“MongoDBOverview“
>db.mycol.find({"by":"tutorialspoint","title":"MongoDBOverview"}).pretty(){ "_id":ObjectId(7df78ad8902c), "title":"MongoDBOverview", "description":"MongoDBisnosqldatabase", "by":"yiibai", "url":"https://www.nhooo.com", "tags":["mongodb","database","NoSQL"], "likes":"100"}>
对于上面给出的例子相当于where子句'whereby='yiibai'ANDtitle='MongoDBOverview',可以通过任意数量的键值对在find子句。
4.MongoDB中OR
语法:
OR条件的基础上要查询文件,需要使用$or关键字。OR基本语法如下所示:
>db.mycol.find({$or:[{key1:value1},{key2:value2}]}).pretty()
例子
下面给出的例子将显示所有的教程,由'yiibai'所写或标题是“MongoDBOverview'
>db.mycol.find({$or:[{"by":"yiibai"},{"title":"MongoDBOverview"}]}).pretty(){ "_id":ObjectId(7df78ad8902c), "title":"MongoDBOverview", "description":"MongoDBisnosqldatabase", "by":"yiibai", "url":"https://www.nhooo.com", "tags":["mongodb","database","NoSQL"], "likes":"100"}>
5.AND和OR一起使用
例子
下面给出的例子将显示有像的文件大于100,其标题是“MongoDBOverview'或者是'yiibai'。等效于SQLwhere子句为
'wherelikes>10AND(by='yiibai'ORtitle='MongoDBOverview')'
>db.mycol.find("likes":{$gt:10},$or:[{"by":"yiibai"},{"title":"MongoDBOverview"}]}).pretty(){ "_id":ObjectId(7df78ad8902c), "title":"MongoDBOverview", "description":"MongoDBisnosqldatabase", "by":"yiibai", "url":"https://www.nhooo.com", "tags":["mongodb","database","NoSQL"], "likes":"100"}>
更新文档
MongoDB的update()和save()方法用于更新文档的集合。update()方法更新现有的文档值,而替换现有的文档通过的文件中save()方法。
1.MongoDBUpdate()方法
update()方法更新现有文档值。
语法:
update()方法的基本语法如下
>db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA,UPDATED_DATA)
例子
考虑以下数据mycol集合。
{"_id":ObjectId(5983548781331adf45ec5),"title":"MongoDBOverview"}{"_id":ObjectId(5983548781331adf45ec6),"title":"NoSQLOverview"}{"_id":ObjectId(5983548781331adf45ec7),"title":"TutorialsPointOverview"}
下面的例子将设置新标题'MongoDBOverview'的文件,更新其标题是“NewMongoDBTutorial”
>db.mycol.update({'title':'MongoDBOverview'},{$set:{'title':'NewMongoDBTutorial'}})>db.mycol.find(){"_id":ObjectId(5983548781331adf45ec5),"title":"NewMongoDBTutorial"}{"_id":ObjectId(5983548781331adf45ec6),"title":"NoSQLOverview"}{"_id":ObjectId(5983548781331adf45ec7),"title":"YiibaiOverview"}>
MongoDB默认将只更新单一的文件,来更新多个你需要设置参数置'multi'为true
>db.mycol.update({'title':'MongoDBOverview'},{$set:{'title':'NewMongoDBTutorial'}},{multi:true})
2.MongoDBSave()方法
save()方法替换现有的文档和通过新的文档save()方法
语法
MongoDB的save()方法的基本语法如下:
>db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
例子
下面的例子将取代文件具有_id为'5983548781331adf45ec7'
>db.mycol.save( { "_id":ObjectId(5983548781331adf45ec7),"title":"YiibaiNewTopic","by":"Yiibai" })>db.mycol.find(){"_id":ObjectId(5983548781331adf45ec5),"title":"YiibaiNewTopic","by":"Yiibai"}{"_id":ObjectId(5983548781331adf45ec6),"title":"NoSQLOverview"}{"_id":ObjectId(5983548781331adf45ec7),"title":"YiibaiOverview"}>