MongoDB: если документ существует VS Если документ не существует

Я новичок в MongoDB, и в настоящее время я связываю его с php, чтобы попытаться выполнить следующую работу:
Я хочу создать базу данных для хранения информации, которая может обновляться в любое время, но она должна сохранять " документ добавлен:" дата.
Итого:

ЕСЛИ документ существует:
– Обновите все в документе, кроме записи даты «документ добавлен в».
ELSE
– Создайте документ с данными + датой «документ добавлен: XXXXX».

В случае базы данных с этим форматом:

Database{ document{ User_ID: "12345", Name: "Joe", More_Info: "" Date_Added_To_DB: "1372291496", Last_Updated:"1372291556"}}


Я исследовал и спрашивал, и лучшее, что у меня есть на данный момент, это функция, которая обновит весь документ, если он существует, и создаст новый документ, если он не существует.

db.Database.update({'User_ID': $userID}, {$set: {'fieldName': новые "данные" }}, {upsert: true})


person Digits    schedule 26.06.2013    source источник


Ответы (1)


Вопрос в том, как вы определяете, что «документ» существует? Обычно вы делаете это, используя уникальный идентификатор. Теперь на помощь приходит ObjectId MongoDB, потому что он уже содержит метку времени. Это также можно использовать в запросах.

Вместо использования целочисленного поля User_ID вы можете рассмотреть возможность вызова поля _id и использовать тип данных ObjectId, чтобы получить эту функциональность бесплатно.

> db.test.insert({"foo" : "test"});
{ "_id" : ObjectId("51cb763e58bb4077aea65b3d"), "foo" : "test" }
> var foo = db.test.findOne();
> foo._id.getTimestamp();
ISODate("2013-06-26T23:16:14Z")
person mnemosyn    schedule 26.06.2013