Dla MongoDB Szukam aktualizacji atomowej, która zwiększy pole, a jeśli ten krok przekroczy maksymalną liczbę, poda tę maksymalną liczbę. Takie samo zachowanie można osiągnąć za pomocą kombinacji operatorów $ inc i $ min, ale niestety nie w jednej aktualizacji atomowej. Spójrz na przykład poniżej.Zwiększenie pola MongoDB z warunkiem maksymalnym w instrukcji aktualizacji
Przykład dokument
{
"_id": 1,
"i": 0
}
Zapytania
db.test.update({_id:1}, {$set:{"a":"foo"}, $inc:{i:1}}); db.test.update({_id:1}, {$min:{i:2}});
db.test.update({_id:1}, {$set:{"b":"bar"}, $inc:{i:1}}); db.test.update({_id:1}, {$min:{i:2}});
db.test.update({_id:1}, {$set:{"c":"baz"}, $inc:{i:1}}); db.test.update({_id:1}, {$min:{i:2}});
dokument Wynik
{
"_id": 1,
"i": 2,
"a": "foo",
"b": "bar",
"c": "baz"
}
Aktualizacja
Dzięki Christian P odpowiedź Zdałem sobie sprawę, że zapomniałem wspomnieć o jeszcze jednym stanie. Potrzebuję aktualizacji dokumentu, ponieważ potrzebuję zaktualizować więcej pól niż pokazano w przykładzie. W rzeczywistości potrzebuję sufitu przyrostowego (maksymalnego) w instrukcji aktualizacji. Zaktualizowałem mój przykład, aby to wyjaśnić.
Dzięki za odpowiedź,” w porządku. Ale zapominam wyjaśnić w pytaniu, że faktycznie potrzebuję zaktualizować więcej pól za pomocą zapytania, więc nie mogę po prostu wykluczyć żadnego dokumentu z aktualizacji zobacz aktualizację mojego pytania. –