2017-01-12 5 views
0

В моем mongodb есть коллекция log, которая имеет уникальный индекс с именем log_id. Я хочу достичь этой цели:
Когда я обновляю документы, если документ с тем же log_id уже существует, то {$inc: {count: 1}}. Если нет, то вставьте новый документ с {count: 1}. Могу ли я сделать это в одной команде?Как обновить документ в Mongodb с условием

ответ

0

вы можете это в одном запросе с опцией {upsert : true}.

и $inc синтаксис { $inc: { <field1>: <amount1>, <field2>: <amount2>, ... } } поэтому вы должны использовать {$inc: {count: 1}} вместо {count: {$inc: 1}}

попробовать:

db.log.update(
     {"log_id": compareLogId}, 
     {$inc: {count: 1}}, 
     {upsert:true} 
) 
+0

Как если 'log_id' не существует, то новый документ не будет' { count: 1} 'Потому что будет больше cols. – Charles

+0

Спасибо, отредактирован для '{$ inc: {count: 1}}' – Charles

+0

, если не соответствует то, что вам нужно? @Charles –