[英]MongoDB Compass: How to filter embedded array object in the MongoDB document
[英]MongoDB Compass: Filter query on array object is not working
我想根据提供的值过滤数组 object 。 我在过滤器文本框中使用以下查询以及投影。 似乎没有应用过滤器。
我也尝试过,但不幸的是数组没有被过滤
{ MissingPersonIds : {$elemMatch: { PhotoId : '2 - Copy (3).jpg'}} }
筛选:
{ "MissingPersonIds.PhotoId" : "2 - Copy (3).jpg" }
投影:
{ MissingPersonIds: { $slice: [1,10] }}
架构是:
[{
"_id": {
"$oid": "61ada7da9a30fd8471869bbc"
},
"ImportKeyId": 5843,
"MissingPersonIds": [
{
"PhotoId": "2 - Copy.jpg",
"Description": "Account ID not found"
},
{
"PhotoId": "2 - Copy (2).jpg",
"Description": "Account ID not found"
},
{
"PhotoId": "2 - Copy (3).jpg",
"Description": "Account ID not found"
},
{
"PhotoId": "2 - Copy - Copy.jpg",
"Description": "Account ID not found"
},
{
"PhotoId": "2 - Copy - Copy (2).jpg",
"Description": "Account ID not found"
}
]
}]
我期待的 output 是:
[{
"_id": {
"$oid": "61ada7da9a30fd8471869bbc"
},
"ImportKeyId": 5843,
"MissingPersonIds": [
{
"PhotoId": "2 - Copy (3).jpg",
"Description": "Account ID not found"
}
]
}]
您需要在投影中使用$filter
来过滤数组中的元素。
db.collection.find({},
{
"MissingPersonIds": {
$filter: {
input: "$MissingPersonIds",
cond: {
"$eq": [
"$$this.PhotoId",
"2 - Copy (3).jpg"
]
}
}
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.