Как заменить предметы в MongoDB - PullRequest
1 голос
/ 10 апреля 2011

Я запрашиваю объекты JSON с уникальными идентификаторами через API.Некоторые из этих предметов уже существуют в моей базе данных MongoDB.Есть ли какая-то функциональность, подобная этой:

Collection.replace({ id: '12345' }, JSON_object)

, которая в первую очередь ищет объект с этим полем id, а затем заменяет его новым объектом, если он его находит, или добавляет новый объект вколлекция, если не найдено ни одного подходящего объекта?

Я делаю это в файле node.js с помощью mongoose.К сожалению, реализация ObjectId там кажется ошибочной, поэтому я ищу общий подход.

Ответы [ 2 ]

4 голосов
/ 11 апреля 2011

Помните, что для получения идентификаторов mongodb необходимо использовать функцию db.bson_serializer.ObjectID.

var ObjectID = db.bson_serializer.ObjectID;
db.collection.update({_id: ObjectID('423523452')}, {foo: 'bar'}, true)
3 голосов
/ 10 апреля 2011

Функция ядра MongoDb обновление имеет upsert опция:

db.collection.update( criteria, objNew, upsert, multi )

, который вставит objNew , если нет документа, соответствующего критериям . Попробуйте:

db.collection.update( { _id: ObjectID('423523452') }, JSON_object, true )

http://www.mongodb.org/display/DOCS/Updating#Updating-update%28%29

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...