基础语法
db.collection.find(<query filter>, <projection>)
说明:
query filter
: 查询条件,指名返回哪些文档;
projection
: 指定返回文档的哪些字段;
示例
1.创建user集合并插入数据
db.user.insertMany(
[
{
name: "name1",
password: "123456",
age: 24,
role: 1,
status: 1,
avart: "name1-avart.png",
badges: [
"blue",
"black"
],
points: [
{ points: 85, bonus: 20 },
{ points: 85, bonus: 10 }
]
},
{
name: "name2",
password: "123456",
age: 28,
role: 2,
status: 1,
avart: "name2-avart.png",
badges: [
"red",
"black"
],
points: [
{ points: 60, bonus: 20 },
{ points: 85, bonus: 10 }
]
}
]
)
2.查询
2.2 基础查询
查询返回全部用户数据
db.user.find({})
查询返回用户name字段为name1
的数据
var filter_data = {
name: "name1"
};
db.user.find(
filter_data
)
多条件查询返回用户name字段为name1
并且role为1
的数据
var filter_data = {
name: "name1",
role: 1
};
db.user.find(
filter_data
)
2.3 使用查询操作符指定条件
$in
:查询数组中包含指定值
数组类型数据查询
var filter_data = {
badges: {
$in: ["red"]
}
};
或者
var filter_data = {
badges: {
$in: "red"
}
};
或者
var filter_data = {
badges: "red"
};
db.user.find(
filter_data
)
字符串类型数据查询
//多值查询:查询role为1或者2的数据
var filter_data = {
role: {
$in: [1,2]
}
};
//单值查询:查询role为1的数据
var filter_data = {
role: 1
};
db.user.find(
filter_data
)
对象数组类型数据查询
//多值查询:查询points数组中points值为85或者60的数据
var filter_data = {
'points.points':{
$in: [85, 60]
},
bonus: 20
};
或者
var filter_data = {
points: {
$elemMatch: {
points: {
$in: [85, 60]
},
bonus: 20
}
}
};
//单值查询:查询points数组中points值为85的数据
var filter_data = {
'points.points':85,
'points.bonus':20,
};
或者
var filter_data = {
points: {
$elemMatch: {
points: 85,
bonus: 20
}
}
};
db.user.find(
filter_data
)
$elemMatch
: 为数组元素指定复合条件,以查询数组中至少一个元素满足所有指定条件的文档。
{ <field>: { $elemMatch: { <query1>, <query2>, ... } } }
$or
: 指定一个使用逻辑 OR 连接词连接各子句的复合查询选择集合中匹配至少一个条件的文档。
{ $or: { <query1>, <query2>, ... } }
//查询status等于1或者age小于25的数据
var filter_data = {
$or: [
{
status: 1,
},
{
age: {
$lt: 25
},
}
]
};
db.user.find(
filter_data
)
$type
: 类型筛查。
具体类型见:https://www.runoob.com/mongodb/mongodb-operators-type.html
//查询name字段类型为字符串的数据
var filter_data = {
name: {
$type: 2,
},
};
db.user.find(
filter_data
)
$exists
: 存在性筛查。
//查询name字段存在的数据
var filter_data = {
name: {
$exists: true,
},
};
db.user.find(
filter_data
)
网友评论