您好我有这样的数据模型
module{
name: "xx",
sa: [
{
sa_name: "yy",
fact: [
fact_name: "zz"
],
dim: [
dim_name: "qq"
]
}
]
}
我嵌入了模块和事实,并在sa中嵌入了暗淡。
我尝试db.coll.find({"module.sa.fact.name":"zz"},{})
无效,因为单个db.coll.find({"module.sa.name":"yy"},{})
工作正常。
如何在子文档中查询此子文档。
答案 0 :(得分:5)
将您的查询更新为:
db.coll.find({"module.sa" : {$elemMatch : {"fact.fact_name": "zz"}}})
答案 1 :(得分:2)
对我来说,查询工作正常,请参阅mongo 2.4.8 shell:
> db.coll.insert({module: {name:"xx", sa: [{sa_name:"yy", fact:[{fact_name:"zz"}], dim:[{dim_name:"qq"}]}]}})
> db.coll.findOne()
{
"_id" : ObjectId("52a85b44fd0b335ab0546ca4"),
"module" : {
"name" : "xx",
"sa" : [
{
"sa_name" : "yy",
"fact" : [
{
"fact_name" : "zz"
}
],
"dim" : [
{
"dim_name" : "qq"
}
]
}
]
}
}
> db.coll.findOne({"module.sa.fact.fact_name":"zz"})
{
"_id" : ObjectId("52a85b44fd0b335ab0546ca4"),
"module" : {
"name" : "xx",
"sa" : [
{
"sa_name" : "yy",
"fact" : [
{
"fact_name" : "zz"
}
],
"dim" : [
{
"dim_name" : "qq"
}
]
}
]
}
}
当你在"module.sa.fact.name"
查询它应该是"module.sa.fact.fact_name"
时,你是否只是遇到某种拼写错误?但是,对于看起来适合您的查询,这个问题也是如此......