我有一个名为Event
的数据库模型。
const eventSchema = new Schema({
action: String,
description: String,
reference: {
id: Number,
name: String,
refType: String,
},
}, { timestamps: true });
数据库中的某些记录是
action | description | refType
------------------------------------
Click | Breakfast | TmdSuggested
------------------------------------
Click | Breakfast | TmdMeatType
------------------------------------
Click | Lunch | TmdSuggested
------------------------------------
Click | Lunch | TmdMeatType
------------------------------------
在这些我要过滤的记录中,只有这些组合。
action | description | refType
------------------------------------
Click | Breakfast | TmdSuggested
------------------------------------
Click | Breakfast | TmdMeatType
------------------------------------
Click | Lunch | TmdMeatType
------------------------------------
我到目前为止所做的是
{
$match: {
action: 'Click',
$or: [
{ description: 'Breakfast', reference: { refType: 'TmdSuggested' } },
{ description: 'Breakfast', reference: { refType: 'TmdMeatType' } },
{ description: 'Lunch', reference: { refType: 'TmdMeatType' } }
]
}
},
这不会给我一个错误。但这似乎不起作用。没有数据返回。 我的代码有什么问题。
如何使用mongo db mongoose实现此目的。
答案 0 :(得分:2)
您可以使用reference.refType
过滤子项。
{ $match: {
action: 'Click',
$or: [ { description: 'Breakfast', "reference.refType": 'TmdSuggested' },
{ description: 'Breakfast', "reference.refType": 'TmdMeatType' },
{ description: 'Lunch', "reference.refType": 'TmdMeatType' } ]
}
}
答案 1 :(得分:1)
那不是您在MongoDB中查询对象元素的方式,我认为这应该起作用
$match: {
action: "Click",
$or: [
{
description: "Breakfast",
"reference.refType": "TmdSuggested"
},
{
description: "Breakfast",
"reference.refType": "TmdMeatType"
},
{
description: "Lunch",
"reference.refType": "TmdMeatType"
}
]
}