0

我正在使用 findAndModify 命令来维护撤消/重做命令的列表。我正在使用“字段”标签来指定“之前”值是什么。然后将其用于构建撤消命令。IE:

命令:

{
    findAndModify : "aaa",
    query : { _id: ObjectId('5215f7d1fe789bb17427bde9') },
    update : { "$set" : { "v1" : 200 } },
    fields : {  v1 : 1, _id : 0 }
}

构建结果:

"Do" : { "$set" : { "v1" : 200 } },
"Undo" : { "$set" : { v1" : 100 } }

但是,我不能使这项工作适用于数组。我做了这样的设置命令:

{ $set : "myArrayVar.3" : 100 }

我尝试过使用如下投影:

{ "myArrayVar.3" : 1 }
{ "myArrayVar.$" : 1 }

但两者都只返回空数组大括号:

{ myArrayVar : [] }

我错过了什么?

4

1 回答 1

0

您不能在投影中使用数字数组索引,但可以使用$slice

fields: { myArrayVar: { $slice: [2, 1] } }

这将只包括第三个元素(跳过 2,取 1)。

于 2013-09-10T13:00:32.807 回答