我们有一个具有以下架构的MongoDB集合。
Sales {
salesID:"SO-0002"
dispatches: [
{
"dispatchNo" : "SO-0002/dispatch/1",
"date" : "2014-05-31T18:30:00.000Z",
"location" : "l1",
"items": [{
//itemDetails
}]
},
{
"dispatchNo" : "SO-0002/dispatch/2",
"date" : "2014-05-31T18:30:00.000Z",
"location" : "l2",
"items": [{
//itemDetails
}]
}
]
}
执行以下查询后:
db.sales.find({salesOrderNo:"SO-0002",'dispatches.dispatchNo':"SO-0002/dispatch/1"}).pretty()
我们希望只获得调度1的详细信息,但我们仍然会获得所有调度的详细信息。
我们错过了什么吗?
感谢。
答案 0 :(得分:1)
是。这是预期的行为。 dispatches是父文档中的数组。匹配文档时,将完整返回文档。解决此问题的唯一方法是将模式更改为多个集合,或使用聚合框架或map / reduce。