相关疑难解决方法(0)

项目阶段操作符在投影数组中的行为

我的问题与密切相关,但并不相似.

我的收藏中有一个示例文档:

db.t.insert({"a":1,"b":2});
Run Code Online (Sandbox Code Playgroud)

我的目的是投影一个名为combinedtype 的字段array,其值为both abtogether.([1,2]).

我只是尝试与一个$project阶段聚合:

db.t.aggregate([
{$project:{"combined":[]}}
])
Run Code Online (Sandbox Code Playgroud)

MongoDB抛出一个错误:disallowed field type Array in object expression.

这意味着不能将字段投影为数组.

但是当我使用$cond运算符投影数组时,该字段会被投影.

db.t.aggregate([
{$project:{"combined":{$cond:[{$eq:[1,1]},["$a","$b"],"$a"]}}}
])
Run Code Online (Sandbox Code Playgroud)

我得到了o/p : {"combined" : [ "$a", "$b" ] }.

如果您注意到输出,则将a和的值b视为文字,而不是字段路径.

任何人都可以向我解释这种行为吗?当我让条件失败时,

db.t.aggregate([
{$project:{"combined":{$cond:[{$eq:[1,2]},["$a","$b"],"$a"]}}}
])
Run Code Online (Sandbox Code Playgroud)

我得到的预期输出$a被视为一个字段路径,因为$a它不是作为数组元素包含的.

mongodb aggregation-framework

1
推荐指数
1
解决办法
1290
查看次数

标签 统计

aggregation-framework ×1

mongodb ×1