у меня есть данные, которые выглядят, как это в моей базе данныхКак нажимать словарь на вложенный массив с помощью mongodb?
> db.whocs_up.find()
{ "_id" : ObjectId("52ce212cb17120063b9e3869"), "project" : "asnclkdacd", "users" : [ ] }
и я попытался добавить к массиву 'пользователей, как так:
> db.whocs_up.update({'users.user': 'usex', 'project' : 'asnclkdacd' },{ '$addToSet': { 'users': {'user':'userx', 'lastactivity' :2387843543}}},true)
, но я получаю следующее сообщение об ошибке:
Cannot apply $addToSet modifier to non-array
То же самое происходит с оператором push
, что я делаю неправильно? им на 2.4.8
я пытался следовать этому примеру отсюда: MongoDB - Update objects in a document's array (nested updating)
db.bar.update({user_id : 123456, "items.item_name" : {$ne : "my_item_two" }} ,
{$addToSet : {"items" : {'item_name' : "my_item_two" , 'price' : 1 }} } ,
false ,
true)
питон тег, потому что я работал с питоном, когда я столкнулся с этим, но это Nto работает на монго оболочки, как вы можете увидеть
EDIT
============================== получил его на работу
очевидно, если я изменяю обновление от
db.whocs_up.update({'users.user': 'usex', 'project' : 'asnclkdacd' },{ '$addToSet': { 'users': {'user':'userx', 'lastactivity' :2387843543}}},true)
к этому:
db.whocs_up.update({'project' : 'asnclkdacd' },{ '$addToSet': { 'users': {'user':'userx', 'lastactivity' :2387843543}}},true)
это работает, но может кто-нибудь объяснить, почему два не достичь того же, в моем понимании, они должны ссылаться на тот же документ, и, следовательно, сделать то же самое , Что добавляет 'users.user': 'userx'
изменить в своем обновлении? ссылается ли он на какой-то внутренний документ в массиве, а не на документ в целом?