仅从 MongoDB 集合中一个对象数组中检索查询的元素?
可以使用投影操作符 $elemMatch 来过滤 MongoDB 集合中对象数组中的查询元素。要仅检索 MongoDB 中对象数组中的查询元素,我们首先使用对象数组创建一个文档集合。
查询如下所示
> db.objectArray.insert({"Persons":[
{"PersonName":"Adam","PersonSalary":25000},{"PersonName":"Larry","PersonSalary":27000
}]});
WriteResult({ "nInserted" : 1 })
> db.objectArray.insert({"Persons":[
{"PersonName":"David","PersonSalary":32000},{"PersonName":"Carol","PersonSalary":77000
}]});
WriteResult({ "nInserted" : 1 })现在,可以使用 find() 显示所有文档。查询如下所示
> db.objectArray.find().pretty();
以下是输出
{
"_id" : ObjectId("5c6bfadc68174aae23f5ef53"),
"Persons" : [
{
"PersonName" : "Adam",
"PersonSalary" : 25000
},
{
"PersonName" : "Larry",
"PersonSalary" : 27000
}
]
}
{
"_id" : ObjectId("5c6bfb0968174aae23f5ef54"),
"Persons" : [
{
"PersonName" : "David",
"PersonSalary" : 32000
},
{
"PersonName" : "Carol",
"PersonSalary" : 77000
}
]
}以下是仅检索 MongoDB 中对象数组中查询元素的查询。在此处,_id:0 用于排除 id 属性(不显示 _id 属性)
> db.objectArray.find({"Persons.PersonSalary":25000}, {
_id:0,Persons:{$elemMatch:{"PersonSalary":25000}}}).pretty();以下是输出
{
"Persons" : [
{
"PersonName" : "Adam",
"PersonSalary" : 25000
}
]
}完成以上任务的另一种方法是借助投影操作符 $。查询如下所示
> db.objectArray.find({"Persons.PersonSalary":25000}, { _id:0,'Persons.$':1}).pretty();以下是输出
{
"Persons" : [
{
"PersonName" : "Adam",
"PersonSalary" : 25000
}
]
}
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 程序设计
C++
C#
MongoDB
MySQL
Javascript
PHP