Я использую команду findAndModify для поддержания списка команд отмены/повтора. Я использую тег «fields», чтобы указать, что такое значения «before». Затем это используется для сборки команды отмены. то есть:массив проекции с findandmodify
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 : "myArrayVar.3" : 100 }
Я попытался с помощью проекции, как:
{ "myArrayVar.3" : 1 }
{ "myArrayVar.$" : 1 }
но оба возвращают только пустые скобки массива:
{ myArrayVar : [] }
Что я упускаю?
@ Discipol yes, field myArrayVar существует и является фактическим массивом. – vesoljc
@Discipol как для проекции id: [link] (http://docs.mongodb.org/manual/tutorial/project-fields-from-query-results/#read-operations-projection) _Important Поле _id, по значение по умолчанию включено в результирующий набор. Чтобы исключить поле _id из набора результатов, вам нужно указать в документе проспекта исключение поля _id (т. Е. {_id: 0}) ._ – vesoljc