'where likes>10 AND (by = 'yiibai tutorials' OR title = 'MongoDB Overview')'
?
>db.mycol.find("likes": {$gt:10}, $or: [{"by": "yiibai tutorials"}, {"title": "MongoDB Overview"}] }).pretty()
9、更新、添加文档?
?
update()方法的基本语法如下
?
>db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA, UPDATED_DATA)
下面的例子将设置其标题“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 Tutorial Overview"}
>
默认情况下,MongoDB将只更新单一文件,更新多,需要一个参数 'multi' 设置为 true。
?
>db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}},{multi:true})
save() 方法替代或添加文档:>db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
?
下面的例子将替换该文件_id '5983548781331adf45ec7'
?
>db.mycol.save(
{
"_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Yiibai New Topic", "by":"Yiibai Yiibai"
}
)
>db.mycol.find()
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"Yiibai Yiibai New Topic", "by":"Yiibai Yiibai"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Yiibai Yiibai Overview"}
>
?
?
10、删除文档?
?
?
MongoDB 的 remove()方法用于从集合中删除文档。remove()方法接受两个参数。一个是标准缺失,第二是justOne标志
?
deletion criteria : 根据文件(可选)删除条件将被删除。
?
justOne : (可选)如果设置为true或1,然后取出只有一个文档。
?
下面的例子将删除所有的文件,其标题为 'MongoDB Overview'
?
>db.mycol.remove({'title':'MongoDB Overview'})
如果有多个记录,并要删除仅第一条记录,然后在 remove()方法设置参数 justOne 。
?
>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
如果没有指定删除条件,则MongoDB将从集合中删除整个文件。这相当于SQL的 truncate 命令。
?
>db.mycol.remove({})
>db.mycol.find()
>
11、find()部分字段(mongodb投影)
?
mongodb投影意义是只选择需要的数据,而不是选择整个一个文档的数据。如果一个文档有5个字段,只需要显示3个,只从中选择3个字段。
MongoDB的find()方法,解释了MongoDB中查询文档接收的第二个可选的参数是要检索的字段列表。在MongoDB中,当执行find()方法,那么它会显示一个文档的所有字段。要限制这一点,需要设置字段列表值为1或0。1是用来显示字段,而0被用来隐藏字段。
?
语法
find()方法的基本语法如下
?
>db.COLLECTION_NAME.find({},{KEY:1})
12、Limit() 方法显示多少行
?
要在MongoDB中限制记录,需要使用limit()方法。 limit() 方法接受一个数字类型的参数,这是要显示的文档数量。
语法
limit()方法的基本语法如下
?
>db.COLLECTION_NAME.find().limit(NUMBER)
还有一个方法 skip()也接受数字类型参数并用于跳过文件数。
?
语法
skip() 方法的基础语法如下所示:
?
>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
例子:
?
下面的例子将仅显示第二个文档。
从第二行开始查,只查一条:
?
>db.mycol.find({},{"title":1,_id:0}).limit(1).skip(1)
{"title":"NoSQL Overview"}
>
请注意,skip() 方法的默认值是 0
?
?
13、文档排序(对查询出的数据进行排序)
?
要排序MongoDB中的文档,需要使用 sort()方法。 sort() 方法接受一个包含字段列表以及排序顺序的文档。 要使用1和-1指定排序顺序。1用于升序,而-1是用于降序。
语法
sort()方法的基本语法如下
?
>db.COLLECTION_NAME.find().sort({KEY:1})
下面的例子将显示的文件排序按标题降序排序。
?
>db.mycol.find({},{"title":1,_id:0}).sort({"title":-1})
{"title":"Yiibai Yiibai Overview"}
{"title":"NoSQL Overview"}
{"title":"MongoDB Overview"}
>
请注意,如果不指定排序类型,那么 sort() 方法将以升序排列文档。
?
?
?
14、MongoDB索引
索引支持查询高效率执行。如果没有索引,MongoDB必须扫描集合中的每一个文档