【发布时间】:2021-08-08 15:33:00
【问题描述】:
我的bookings集合中有以下用户详细信息
{
"_id" : ObjectId("609a382b589346973c84c6fe"),
"Name" : "abc",
"UserId":1
"Status" : "Pending",
"BookingData" : {
"Date" : ISODate("2021-04-30T04:00:00.000Z"),
"info" : [],
"BookingDataMethod" : "avf",
"Message" : null,
"products" : [
{
"_id" : ObjectId("60a4e92775e5de3570578820"),
"ProductName" : "Test1",
"ProductID" : ObjectId("60a4e92475e5de357057880a"),
"IsDeliveryFailed" : "Yes"
},
{
"_id" : ObjectId("60a4e92775e5de357057881f"),
"ProductName" : "Test2",
"ProductID" : ObjectId("60a4e92475e5de357057880d")
}
],
}
}
我已经为以下条件准备了一个查询,当我运行以下查询时,我应该得到 "UserId":1 文档,但我得到了 0 记录
条件 1:产品不应为空
条件 2:ProductID 应存在于 products 数组中且不应为空
条件 3:IsDeliveryFailed 不应为“是”
基于上述用户,只有一个产品交付失败(IsDeliveryFailed": "Yes"),所以当我运行此查询时,它应该返回 "UserId":1 文档。如果两个产品 "IsDeliveryFailed": "Yes" " 然后 我们不应该得到这个用户
查询
db.getCollection('bookings').find({
"$and": [
{ "BookingData.products": { $ne: [] } },
{ "BookingData.products": {"$elemMatch":{ "ProductID": { "$exists": true ,$ne: null } }} },
{ "BookingData.products": {"$elemMatch":{ "IsDeliveryFailed": { $ne: 'Yes' } }} }
]
})
有人可以告诉我上述查询的问题吗,或者请帮我准备针对上述情况的查询?
【问题讨论】:
标签: node.js mongodb mongoose mongodb-query