$每个不在mongodb工作

时间:2015-07-31 06:39:38

标签: mongodb mongodb-query

我想使用$ push和$ each的更新查询将新数据添加到mongodb中字段的子元素中,但它直接插入每个运算符的整个部分。请帮我修理一下。我的查询如下。

> db.Groups.insert({ "_id" : ObjectId("55b54aa4e2aa83f1f123a1a2"), "_creator" : ObjectId("55b2932cb57f47c0be6f071f"), "_messages" : ["hi"], "_inactive" : [ ], "_active" : [ Obje

> .Groups.update({ "_id" : ObjectId("55b54aa4e2aa83f1f123a1a2")},{$push: {_active : { $each: [ ObjectId("55b2932cb57f47c0be6f072f"), ObjectId("55b2932cb57f47c0be6f073f") ]}}});

运行这些查询后的结果

{ "__v" : 39, "_active" : [     ObjectId("55b2932cb57f47c0be6f071f"),   ObjectId("55b28b203a6b52e9b90e3cd4"),   {   "$each" : [     ObjectId("55b2932cb57f47c0be6f072f"),   ObjectId("55b2932cb57f47c0be6f073f") ] } ], "_creator" : ObjectId("55b2932cb57f47c0be6f071f"), "_id" : ObjectId("55b54aa4e2aa83f1f123a1a2"), "_inactive" : [ ], "_messages" : [ "hi" ] }

预期结果

{ "__v" : 39, "_active" : [     ObjectId("55b2932cb57f47c0be6f071f"),   ObjectId("55b28b203a6b52e9b90e3cd4"), ObjectId("55b2932cb57f47c0be6f072f"),     ObjectId("55b2932cb57f47c0be6f073f") ], "_creator" : ObjectId("55b2932cb57f47c0be6f071f"), "_id" : ObjectId("55b54aa4e2aa83f1f123a1a2"), "_inactive" : [ ], "_messages" : [ "hi" ] }

1 个答案:

答案 0 :(得分:2)

这里的MongoDB版本必须是一个非常旧的版本,现在确认为2.0.4。这在2.2.x版本中甚至应该出错,因为它将$each解释为字段并由于字段名称中的保留$而拒绝它。

如果您打算使用$each,请至少使用MongoDB 2.4,否则会$pushAll,现在认为已弃用。 2.4和2.6之间的唯一区别是,早于2.6,你需要将它与$sort修饰符结合起来。