【发布时间】:2017-09-18 14:47:59
【问题描述】:
我收集了一些产品。每个产品都包含一系列历史项目。
{
"_id" : "product1"
"name" : "Product 1",
"history" : [
{
"date" : "2017-09-18 11:49:03.000",
"processed" : 0,
"status": "New"
},
{
"date" : "2017-09-18 11:49:03.000",
"processed" : 0,
"diff": []
}
]
}
{
"_id" : "product2"
"name" : "Product 2",
"history" : [
{
"date" : "2017-09-18 11:49:03.000",
"processed" : 1,
"status": "New"
},
{
"date" : "2017-09-18 11:49:03.000",
"processed" : 0,
"diff": []
}
]
}
我可以使用以下 mongoDB 查询找到所有新产品和尚未处理的历史记录:
db.products.find(
{
"history": {
$elemMatch: {
"processed": {$eq: 0},
"status": {$eq: "New"}
}
}
}
)
但我不知道如何找到:
- 它有一个需要处理的历史项目
"processed": {$eq: 0} - 不包含状态为“新”且处理值为“0”的历史记录项
所以它应该带回“product2”而不是“product1”,因为 product1 需要以不同的方式处理。
非常感谢任何帮助:-)
【问题讨论】:
标签: mongodb mongodb-query