在 mongodb 的文档中查找子元素
Finding subelements in a document in mongodb
我正在处理以下文档
{
"_id" : 123344223,
"firstName" : "gopal",
"gopal" : [
{
"uuid" : "123",
"name" : "sugun",
"sudeep" : [
{
"uuid" : "add32",
"name" : "ssss"
},
{
"uuid" : "fdg456",
"name" : "gfg"
}
]
},
{
"uuid" : "222",
"name" : "kiran"
}
]
}
我想得到如下输出
{
"_id" : 456,
"gopal" : [
{
"uuid" : "123",
"name" : "sugun",
"sudeep" : [
{
"uuid" : "add32",
"name" : "ssss"
}
]
}
]
}
我尝试了很多东西,比如
db.People.findOne({_id:123},{gopal:{$elemMatch:{uuid:"123",sudeep:{$elemMatch:{uuid:"add32"}}}}});
但无论我怎么尝试,returns 文件都是这样的
{
"_id" : 123,
"gopal" : [
{
"uuid" : "123",
"name" : "sugun",
"sudeep" : [
{
"uuid" : "add32",
"name" : "ssss"
},
{
"uuid" : "fdg456",
"name" : "gfg"
}
]
}
]
}
你能帮忙吗?
你知道MongoDBaggregation pipeline
吗?
> db.people.aggregate([
{$match: {_id: 123}},
{$unwind: "$gopal"},
{$unwind: "$gopal.sudeep"},
{$match: {"gopal.uuid": "123", "gopal.sudeep.uuid" : "add32"}}
])
输出
{
"_id" : 123,
"firstName" : "gopal",
"gopal" : {
"uuid" : "123",
"name" : "sugun",
"sudeep" : {
"uuid" : "add32",
"name" : "ssss"
}
}
}
在聚合管道中使用 $unwind
db.People.aggregate([{$match:{_id:'123'}},{$match:{gopal.uuid:'123'}},{$unwind:'$sudeep' },{$匹配:{uuid:'add32'}}])
我正在处理以下文档
{
"_id" : 123344223,
"firstName" : "gopal",
"gopal" : [
{
"uuid" : "123",
"name" : "sugun",
"sudeep" : [
{
"uuid" : "add32",
"name" : "ssss"
},
{
"uuid" : "fdg456",
"name" : "gfg"
}
]
},
{
"uuid" : "222",
"name" : "kiran"
}
]
}
我想得到如下输出
{
"_id" : 456,
"gopal" : [
{
"uuid" : "123",
"name" : "sugun",
"sudeep" : [
{
"uuid" : "add32",
"name" : "ssss"
}
]
}
]
}
我尝试了很多东西,比如
db.People.findOne({_id:123},{gopal:{$elemMatch:{uuid:"123",sudeep:{$elemMatch:{uuid:"add32"}}}}});
但无论我怎么尝试,returns 文件都是这样的
{
"_id" : 123,
"gopal" : [
{
"uuid" : "123",
"name" : "sugun",
"sudeep" : [
{
"uuid" : "add32",
"name" : "ssss"
},
{
"uuid" : "fdg456",
"name" : "gfg"
}
]
}
]
}
你能帮忙吗?
你知道MongoDBaggregation pipeline
吗?
> db.people.aggregate([
{$match: {_id: 123}},
{$unwind: "$gopal"},
{$unwind: "$gopal.sudeep"},
{$match: {"gopal.uuid": "123", "gopal.sudeep.uuid" : "add32"}}
])
输出
{
"_id" : 123,
"firstName" : "gopal",
"gopal" : {
"uuid" : "123",
"name" : "sugun",
"sudeep" : {
"uuid" : "add32",
"name" : "ssss"
}
}
}
在聚合管道中使用 $unwind
db.People.aggregate([{$match:{_id:'123'}},{$match:{gopal.uuid:'123'}},{$unwind:'$sudeep' },{$匹配:{uuid:'add32'}}])