插入文档
insert()
语法格式
insert()
方法的基本格式为:>db.COLLECTION_NAME.insert(document)
范例1
|
|
mycol 是上一节所创建的集合的名称。如果数据库中不存在该集合,那么MongoDB会创建该集合,并向其中插入文档。
在插入的文档中,如果我们没有指定_id
参数,那么MongoDB会自动为文档指定一个唯一的 ID。_id
是一个 12 字节长的 16 进制数,这 12 个字节的分配如下:
_id: ObjectId(4 bytes timestamp, 3 bytes machine id, 2 bytes process id, 3 bytes incrementer)
你还可以将用 insert()
方法传入一个文档数组,范例如下:
范例2
|
|
save()
如果没有指定文档的_id,那么save()
和insert()
完全一样。
如果指定了_id,那么它就会覆盖掉save()
方法中指定_id的文档的全部数据。
查询文档
find()
查询 MongoDB 集合中的数据,使用 find()
方法。
语法格式
find()
方法基本格式为:
>db.COLLECTION_NAME.find()
find()
会以非结构化的方式来显示所有文档
pretty()
以结构化方式显示结果,使用 pretty()
方法。
语法格式
>db.COLLECTION_NAME.find().pretty()
范例
|
|
find()
还有一个扩展方法findOne()
,只返回一个文档。
MongoDB 中类似WHERE子句的语句
操作 | 格式 | 范例 | RDBMS中的类似语句 |
---|---|---|---|
等于 | {<key>:<value>} |
db.mycol.find({"by":"Freak"}).pretty() |
where by = 'Freak' |
小于 | {<key>:{$lt:<value>}} |
db.mycol.find({"likes":{$lt:50}}).pretty() |
where likes < 50 |
小于或等于 | {<key>:{$lte:<value>}} |
db.mycol.find({"likes":{$lte:50}}).pretty() |
where likes <= 50 |
大于 | {<key>:{$gt:<value>}} |
db.mycol.find({"likes":{$gt:50}}).pretty() |
where likes > 50 |
大于或等于 | {<key>:{$gte:<value>}} |
db.mycol.find({"likes":{$gte:50}}).pretty() |
where likes >= 50 |
不等于 | {<key>:{$ne:<value>}} |
db.mycol.find({"likes":{$ne:50}}).pretty() |
where likes != 50 |
MongoDB中的AND条件
语法格式
在 find()
方法中,如果传入多个键,并用逗号( , )分隔它们,那么 MongoDB 会把它看成是 AND 条件。AND 条件的基本语法格式为:
>db.mycol.find({key1:value1, key2:value2}).pretty()
范例
下例将展示所有由 “Freak” 发表的标题为 “MongoDB Overview” 的教程。
|
|
对于上例这种情况,RDBMS 采用的 WHERE 子句将会是:
where by='tutorials point' AND title='MongoDB Overview'
你可以在 find 子句中传入任意的键值对。
MongoDB中的OR条件
语法格式
若基于OR条件来查询文档,可以使用关键字 $or
。OR条件的基本语法格式为:
|
|
范例
下例将展示所有由 “Freak” 发表的或标题为 “MongoDB Overview” 的教程。
|
|
结合使用AND与OR条件
范例
下例所展示文档的条件为:喜欢数大于100,标题是“MongoDB Overview”,或者是由“Freak” 所发表的。相应的SQL WHERE子句为:where likes>10 AND (by = 'tutorials point' OR title = 'MongoDB Overview')
。
|
|
更新文档
MongoDB 中的 update()
与 save()
方法都能用于更新集合中的文档。 update()
方法更新已有文档中的值,而 save()
方法则是用传入该方法的文档来替换已有文档。
update()方法
update()
方法更新已有文档中的值。
语法格式
update()
方法基本格式如下:
>db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA, UPDATED_DATA)
范例
假如mycol集合中有下列数据:
|
|
下面的例子将把文档原标题 ‘MongoDB Overview’ 替换为新的标题 ‘New MongoDB Tutorial’。
|
|
MongoDB默认只更新单个文档,要想更新多个文档,需要把参数multi
设为true
。
>db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}},{multi:true})
save()方法
save()
方法利用传入该方法的文档来替换已有文档。
语法格式
save()
方法基本语法格式如下:
>db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
范例
下例用_id为’5983548781331adf45ec5’的文档代替原有文档。
|
|
删除文档
remove()方法
MongoDB利用 remove()
方法 清除集合中的文档。它有2个可选参数:
- deletion criteria:(可选)删除文档的标准。
- justOne:(可选)如果设为true或1,则只删除一个文档。
语法格式
remove()
方法的基本语法格式如下所示:>db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)
范例
假如 mycol 集合中包含下列数据:
|
|
下面我们将删除其中所有标题为 ‘MongoDB Overview’ 的文档。
|
|
只删除一个文档
如果有多个记录,而你只想删除第一条记录,那么就设置remove()
方法中的justOne
参数:
>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
删除所有文档
如果没有指定删除标准,则 MongoDB 会将集合中所有文档都予以删除。这等同于 SQL 中的 truncate 命令。
|
|
本文作者:余震(Freak)
本文出处:Rockjins Blog
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN许可协议。转载请注明出处!