我目前正在尝试查询mongodb中的数组,我想查找其中包含id:“ZhU76Ta
”的所有字段,但要搜索的数组在其他文档中是barry,所以我的查询看起来像这样:{"punishdata.Entrys.0.id": "ZhU76Ta"}
但这只查询数组中的第一个文档,我尝试了类似这样的{"punishdata.Entrys.*.id": "ZhU76Ta" }
,但这也不起作用,任何人都知道怎么做?
Document structure:
{
"_id" : ObjectId("5b212e540a975a231c85419c"),
"name" : "Starmixcraft",
"punishdata" : {
"Entrys" : [
{
"id" : "ZhU76Ta",
"end" : NumberLong(-2),
"start" : NumberLong(1528901227837),
"time" : NumberLong(-2)
}
]
}
}
答案 0 :(得分:1)
试试这段代码:
db.collectionName.find({"punishdata.Entrys.id": "ZhU76Ta" })
答案 1 :(得分:1)
您需要在此处使用$filter aggregation
,这样才能消除数组中不匹配的文档
db.collection.aggregate([
{
"$project": {
"name": 1,
"punishdata.Entrys": {
"$filter": {
"input": "$punishdata.Entrys",
"as": "entry",
"cond": {
"$eq": [
"$$entry.id",
"ZhU76Ta"
]
}
}
}
}
}
])