基础查询语法:
find():db.COLLECTION_NAME.find()
Case:
> use post
> db.post.insert([
{
title: 'MongoDB Overview',
description: 'MongoDB is no sql database',
by: 'zhongrun',
url: 'http://www.xiaojun.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
},
{
title: 'NoSQL Database',
description: "NoSQL database doesn't have tables",
by: 'zhognrun',
url: 'http://www.xiaojun.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 20,
comments: [
{
user:'zhongrun',
message: 'My first comment',
dateCreated: new Date(2022,02,10,2,35),
like: 0
}
]
}
])
数据查询:
> db.post.find()
效果:
pretty()效果:
pretty相比普通的find()效果查询出来的结果更加的美观直接。也可以进行设置完成定制化。如果你想让 mongo shell 始终以 pretty 的方式显示返回数据,可以通过下面的指令实现:
echo "DBQuery.prototype._prettyShell = true" >> ~/.mongorc.js
设置之后默认的显示效果就是pretty()效果。
MongoDB中的 AND操作:
用法:db.mycol.find({ key1: value1, key2: value2 }).pretty()
Case:
> db.post.find({"by":"zhongrun","to": "IBM"}).pretty()
如上语句就可以查找出 by 字段为 ‘zhognrun’,to 字段为 ‘IBM’ 的所有记录,意思是找出系统中由 zhongrun发送给 IBM的所有邮件。
MongoDB中的OR操作:
MongoDB 中,OR 查询语句以 $or 作为关键词,用法如下:
> db.users.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
> db.users.find({
$or:[
{"by":"zhongrun"},
{"title": "MongoDB Overview"}
]
}).pretty()
对应的RDBMS语句为:
SELECT * FROM post WHERE by = 'zhongrun' OR title = 'MongoDB Overview'
同时使用AND OR:
Case:
> db.post.find({
"likes": {$gt:10},
$or: [
{"by": "zhongrun"},
{"title": "MongoDB Overview"}
]
}).pretty()
{$gt:10}
表示大于 10,另外,$lt
表示小于、$gte
表示大于等于、$lte
表示小于等于、$ne
表示不等于。
如果这样的符号记起来稍微有点麻烦,可以根据它们的全写配合记忆:
gt:大于 greater than
lt:小于 less than
gte:大于或等于 greater than equal
lte:小于或等于 less than equal
小节:find 是查询一个集合中文档的指令,其作用相当于关系型数据库的 SELECT ,通过在 find 方法中添加键值对,可以实现 AND 条件查询;对于 OR 查询,需要使用 $or 变量并且其后加上选择查询的条件数组。MongoDB 的模糊查询可以用正则匹配的方式实现。
# 以 'start' 开头的匹配式:
{"name":/^start/}
# 以 'tail' 结尾的匹配式:
{"name":/tail$/}