Mongodb 如何在Mongo中选择数组的一部分并进行筛选?
我在Mongo中有一个集合,其中包含如下所示的文档:Mongodb 如何在Mongo中选择数组的一部分并进行筛选?,mongodb,mongodb-query,Mongodb,Mongodb Query,我在Mongo中有一个集合,其中包含如下所示的文档: { name: "Bob", destinations: [ { city: "Dallas", state: "Texas", isBusiness: "true", }, { city: "San Diego", state: "California",
{
name: "Bob",
destinations:
[
{
city: "Dallas",
state: "Texas",
isBusiness: "true",
}, {
city: "San Diego",
state: "California",
isBusiness: "true",
}
]
},
{
name: "Sue",
destinations:
[
{
city: "Las Vegas",
state: "Nevada",
isBusiness: "false",
}, {
city: "Sacramento",
state: "California",
isBusiness: "true",
}
]
}
我想查询此集合,以便接收每个人的姓名
,以及加利福尼亚州内每个目的地的城市
,但不接收应忽略的isBusiness
值
查询结果应为:
[
{
name: "Bob",
city: "San Diago",
},
{
name: "Sue",
city: "Sacramento"
}
]
这个例子有点做作,但我如何做到这一点?相当基本的聚合,不确定如何解释它:
db.collectionName.find({"destinations.state":"California"},{name:1,"destinations.city":1})
db.collection.aggregate([
{$unwind: "$destinations"},
{$match: {"destinations.state":"California"}},
{$project: {_id:0, name: 1, city: "$destinations.city"}}
])
文件:
db.collection.find({
destinations: {
$elemMatch: {
state: "California"
}
}
}, {
'destinations.$': 1,
name: 1,
_id: 0
})
这是不对的。它确实正确地从
destinations
数组中提取城市
,但它仍然返回所有城市,而不仅仅是加利福尼亚州的城市。是的。贴出的带有聚合的答案是您的解决方案。