как сделать автоматическую вставку значения по умолчанию или обновить игнорировать в MongoDB - PullRequest
1 голос
/ 20 октября 2011

У меня проблема с использованием операции Upsert.

У меня есть два поля даты в таблице: «создано» и «обновлено», я использую операцию обновления, которая выполняет операцию INSERT, когда одной записи не существует, в противном случае - операция UPDATE.

при первой вставке, поле «созданный» и поле «обновление» автоматически устанавливают текущую дату, при следующем обновлении поле «созданный» игнорировать, поле «обновить» обновлять.

но я не могу ни в одном утверждении сделать это. Вот мой код:

colls.Update(Query.EQ("_id", page.Id),
             Update.Set("created", page.Created)//in here,how to??
                   .Set("updated", page.LastUpdated)
                   .Inc("freq", 1), UpdateFlags.Upsert, SafeMode.False);

мой код сериализации:

cm.MapProperty<DateTime>(c => c.Created).SetElementName("created")
                    .SetSerializationOptions(datetimeSerializationOptions)
                    .SetDefaultValue(DateTime.Now);

cm.MapProperty<DateTime>(c => c.LastUpdated).SetElementName("updated")
                    .SetSerializationOptions(datetimeSerializationOptions);

1 Ответ

1 голос
/ 20 октября 2011

В настоящее время mongodb не поддерживает "upsert", который ведет себя по-разному, если это вставка или обновление. но по их плану в джира . Поэтому, прежде чем принять решение о вставке или обновлении, вы проверяете, существует ли запись (просто используйте несколько запросов); или дождитесь новой версии mongodb.

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