Chr*_*our 3 mongodb nosql aggregation-framework
是否可以project使用 MongoDB 的聚合框架进行操作的布尔值?
例如,给定一个像这样的输入文档:
{
"id": 123,
"data": [
{
"val": 1
},
{
"val": 2
},
{
"val": 3
},
{
"val": 4
},
{
"val": 5
}
]
}
Run Code Online (Sandbox Code Playgroud)
$data.val > 3我想返回的操作是:
{
"result": [
{
"bool_val": 0
},
{
"bool_val": 0
},
{
"bool_val": 0
},
{
"bool_val": 1
},
{
"bool_val": 1
}
],
"ok": 1
}
Run Code Online (Sandbox Code Playgroud)
这就是我想出的:
db.test.aggregate([{$match: {id: 123}},
{$unwind: "$data"},
{$project: {"bool_val": {"$data.val": {$gt: 3}}, _id: 0}}
])
Run Code Online (Sandbox Code Playgroud)
这会产生以下错误:
aggregate failed: {
"errmsg": "exception: invalid operator '$data.val'",
"code": 15999,
"ok": 0
}
Run Code Online (Sandbox Code Playgroud)
你必须使用$cond:
db.test.aggregate([
{
$match: {id: 123}
},
{
$unwind: "$data"
},
{
$project: {
"bool_val": {
$cond: [ {$gt: [ "$data.val", 3] }, 1, 0 ]
},
_id: 0
}
}
])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3077 次 |
| 最近记录: |