Uruchamianie Mongo 4.2
, db.collection.update()
może zaakceptować potok agregacji, ostatecznie umożliwiając aktualizację/tworzenie pola na podstawie innego pola:
// { a: "Hello", b: "World" }
// { a: "Olleh", b: "Dlrow" }
db.collection.update(
{},
[ { $set: { active: { $eq: [ "$a", "Hello" ] } } } ],
{ multi: true }
)
// { a: "Hello", b: "World", active: true }
// { a: "Olleh", b: "Dlrow", active: false }
-
Pierwsza część
{}
to zapytanie dopasowujące, filtrujące dokumenty do zaktualizowania (w naszym przypadku wszystkie dokumenty). -
Druga część
[ { $set: { active: { $eq: [ "$a", "Hello" ] } } } ]
to potok agregacji aktualizacji (zwróć uwagę na nawiasy kwadratowe oznaczające użycie potoku agregacji).$set
to nowy operator agregacji i alias$addFields
. Następnie można użyć dowolnego operatora agregacji w ramach$set
scena; w naszym przypadku warunkowe sprawdzenie równości, od którego zależy wartość do użycia dla nowegoactive
pole. -
Nie zapomnij
{ multi: true }
, w przeciwnym razie tylko pierwszy pasujący dokument zostanie zaktualizowany.