Обновление Mongoid с оператором Positonal не работает
Я пытаюсь обновить встроенную коллекцию mongodb, используя оператор $ positional из ruby mongoid, но он не работает. Ниже mongoid запрос
Viewcounter.collection.update({:item_id=>BSON::ObjectId('yyyy'),'viewinfos.remote_ip' => 'xxxx'},{'$inc' => {'viewinfos.$.viewcount' => 1}})
После еще нескольких копаний я обнаружил, что никакие mongodb-запросы не работают с mongoid update.inc, в том числе, простым запросом ниже
Item.collection.update({'_id' =>BSON::ObjectId('sss')},{:isused => false})
У кого-нибудь есть лучший способ выполнять запросы позиционного оператора с помощью mongoid?
РЕДАКТИРОВАТЬ
Но согласно официальной документации ruby-драйвера mongodb, это должно работать. ниже выдержки
coll.update({"_id" => doc["_id"]}, {"$set" => {"name" => "MongoDB Ruby"}})
1 ответ
Общая идея заключается в том, что вы должны перейти к драйверу ruby (через коллекцию) и сделать это так:
Viewcounter.collection.update({"viewinfos.remote_ip" => "xxxx"}, {:$inc => {"viewinfos.$.viewcount" => 1}})