Обновление Mongoid с оператором Positonal не работает - PullRequest
1 голос
/ 10 декабря 2011

Я пытаюсь обновить встроенную коллекцию mongodb, используя позиционный оператор $ из ruby ​​mongoid, но он не работает. Ниже монгоидного запроса

Viewcounter.collection.update({:item_id=>BSON::ObjectId('yyyy'),'viewinfos.remote_ip' => 'xxxx'},{'$inc' => {'viewinfos.$.viewcount' => 1}})

После еще нескольких копаний я обнаружил, что никакие запросы mongodb не работают с mongoid update.включая простой запрос

Item.collection.update({'_id' =>BSON::ObjectId('sss')},{:isused => false})

У кого-нибудь есть лучший способ выполнять запросы позиционного оператора с помощью mongoid?

EDIT

Но в соответствии с официальной документацией драйвера Ruby * mongodb , это должно работать. ниже выдержки

coll.update({"_id" => doc["_id"]}, {"$set" => {"name" => "MongoDB Ruby"}})

1 Ответ

4 голосов
/ 12 декабря 2011

Общая идея заключается в том, что вы должны перейти к драйверу ruby ​​(через коллекцию) и сделать это так:

Viewcounter.collection.update({"viewinfos.remote_ip" => "xxxx"}, {:$inc => {"viewinfos.$.viewcount" => 1}})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...