当我想查询数组的macting子文档时,我总是面对同样的事情。
{
"_id" : 1,
"value" : 5,
"array" :[ {"name" : "John", "born" : ISODate("1980-04-17T13:11:54Z"), "hasACar" : false},
{"name" : "Alice", "born" : ISODate("1985-04-17T13:11:54Z"), "hasACar" : false},
{"name" : "Jordan", "born" : ISODate("1980-05-19T104:11:54Z"), "hasACar" : true} ]
}
{
"_id" : 2,
"value" : 3,
"array" :[ {"name" : "Neil", "born" : ISODate("1985-11-14T16:11:54Z"), "hasACar" : false},
{"name" : "Marin", "born" : ISODate("1987-08-17T13:15:00Z"), "hasACar" : false}]
}
{
"_id" : 3,
"value" : 7,
"array" :[ {"name" : "Micheal", "born" : ISODate("1975-04-17T13:11:54Z"), "hasACar" : false},
{"name" : "Lisa", "born" : ISODate("1985-04-17T13:11:54Z"), "hasACar" : true},
{"name" : "Pascal", "born" : ISODate("1965-05-19T104:11:54Z"), "hasACar" : false} ]
}
{
"_id" : 4,
"value" : 1,
"array": [ {"name" : "Dave", "born" : ISODate("1980-04-17T13:11:54Z"), "hasACar" : true},
{"name" : "Paul", "born" : ISODate("1985-04-17T13:11:54Z"), "hasACar" : false},
{"name" :"Chuck", "born" : ISODate("1980-05-19T104:11:54Z"), "hasACar" : true} ]
}
我想检索只有匹配的子文档的所有文档。这个标准是在1979年之后诞生的,并且有一个错误,这意味着省略了拥有var并且在1979年之前出生的人,然后返回文件。
我可以用聚合框架制作这个东西,但我很好奇是否有另一种方法可以在不使用聚合或mapreduce的情况下制作它。
我在查询时尝试在投影案例中使用$ elemMatch运算符,但它返回的文档只有第一个匹配的子文档。
感谢任何帮助或建议。
THX。