使用findandmodify进行数组投影

时间:2013-09-10 09:32:49

标签: mongodb

我正在使用findAndModify命令来维护一个undo / redo命令列表。我正在使用“fields”标签来指定“之前”值。然后使用它来构建撤消命令。即:

CMD:

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

建立结果:

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

但是,我无法使这个工作适用于数组。我做了这样的set命令:

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

我尝试过使用像

这样的投影
{ "myArrayVar.3" : 1 }
{ "myArrayVar.$" : 1 }

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

{ myArrayVar : [] }

我错过了什么?

1 个答案:

答案 0 :(得分:0)

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

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

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