Mob*_*ihy 3 mongoose mongodb aggregation-framework
我有以下架构
{
f1: "test",
f2: "something",
type: "A",
date: "2018-11-01T00:00:00.000Z",
deleted: false
},
{
"f1": "check",
type: "B",
deleted: false
}
Run Code Online (Sandbox Code Playgroud)
现在我想要的是获取所有数据,如果type = "A", then add an extra condition to my match query, suppose compare its date with current date. 我目前的查询是:
db.getCollection('myCollection').aggregate([
{$match:{
{"deleted":false},
// I want to check if type is A then compare its date
}}
])
Run Code Online (Sandbox Code Playgroud)
您可以尝试$or说“如果它不是类型 A或日期是 x”:
{$match:{
$and: [
{deleted: false},
$or: [
{type: {$ne: 'A'}},
{date: {$gte: ISODate("2018-01-01T00:00:00.0Z"), $lt: ISODate("2018-06-01T00:00:00.0Z")}}
]
]
}}
Run Code Online (Sandbox Code Playgroud)
$match有条件使用$or。
db.getCollection('tests').aggregate([
{ $match: {
$or : [
{ "deleted": false, "type": "A", "date": ISODate("2018-11-01T00:00:00.000Z") },
{ "deleted": false, type: { $ne: "A" }}
]}
}
])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8070 次 |
| 最近记录: |