当我运行mongoose更新脚本时,属性$in
上的_id
条件设置为类似:'56952ed6457e483a389c9fe4'
而不是ObjectId('56952ed6457e483a389c9fe4')
的字符串,查询条件不会比赛。但是,如果我显式键入ObjectId(.)
,则查询将按预期工作。
问题:我是否需要显式地将字符串类型转换为mongoose对象以使其工作?
这有效:
db.apps.update(
{ $and: [ {name : 'a1'}, {_id : {$in : [Object('56952ed6457e483a389c9fe4')]}} ] },
{"_id" : ObjectId("56952ed6457e483a389c9fe4"), name : "a1", intent_ids: [ObjectId('56952ed6457e483a389c9ff8'), ObjectId('56952ed6457e483a389c9ff9')]}
);
这不起作用:
db.apps.update(
{ $and: [ {name : 'a1'}, {_id : {$in : ['56952ed6457e483a389c9fe4']}} ] },
{"_id" : ObjectId("56952ed6457e483a389c9fe4"), name : "a1", intent_ids: [ObjectId('56952ed6457e483a389c9ff8'), ObjectId('56952ed6457e483a389c9ff9')]}
);