2016-01-22 3 views
0

Я хочу добавить еще один элемент в вложенном массиве, но при выполнении приговора не найти любые совпадения

предложение является следующее:

db.classroom.update({ 
    _id:ObjectId("56a1276741c1375cd4e90b86"), 
    "code.user":{$ne:DBRef("user", 201309)} 
},{ 
    $push:{ 
    "code.$.user":{ $ref: "user", $id: 201308 } 
    } 
}) 

И коллекции

{ 
     "_id" : ObjectId("56a1276741c1375cd4e90b86"), 
     "name" : "Desarrollo de Software", 
     "comment" : "Salon destinado al Desarollo de Software", 
     "code" : [ 
       { 
         "code" : "ABCDEF123456", 
         "user" : [ 
           DBRef("user", 201309) 
         ] 
       } 
     ] 
} 

ответ

0

Если я правильно читаю ваш запрос, поиск является взаимоисключающим. Вы ищете, где

{_id:ObjectId("56a1276741c1375cd4e90b86")} 

и

{"code.user":{$ne:DBRef("user", 201309)}} 

$ne значение НЕ РАВНО (!=) и документ, который вы показали иллюстрирует объект с этим _id только имеет значение DBRef вы явно не делать хотеть.

Я подозреваю, только удаление, что второй пункт получит Вас дальше:

db.classroom.update({ 
    _id:ObjectId("56a1276741c1375cd4e90b86")}, 
    {$push:{"code.$.user":{ $ref:"user", $id: 201308 }}}) 
+0

Я уже пытался, но Монго посылает мне это сообщение: ' оператор positional не нашел соответствия, необходимого из запроса. Unexpanded update: code. $. User' – DanyNsg

0

Попробуйте один

db.classroom.update({ 
    _id:ObjectId("56a1276741c1375cd4e90b86")}, 
    {$push:{"code.$.user":{$each:{$ref:"user", $id: 201308 }}}}) 
Смежные вопросы