MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB - Dodawanie do zbioru i inkrementacja

Jeśli chcesz przełączyć się z listy na skrót (obiekt), możesz to zrobić atomowo.

Z dokumentacji :"$inc ... zwiększa pole o wartość liczbową, jeśli pole jest obecne w obiekcie, w przeciwnym razie ustawia pole na wartość liczbową."

{ $inc : { field : value } }

Tak więc, jeśli mógłbyś dokonać refaktoryzacji kontenera i obiektu:

words: [
  {
    'word': 'foo',
    'count': 1
  },
  ...
]

do:

words: {
  'foo': 1,
  'other_word: 2,
  ...
}

możesz użyć operacji update z:

{ $inc: { 'words.foo': 1 } }

co stworzyłoby { 'foo': 1 } jeśli 'foo' nie istnieje, w przeciwnym razie zwiększ foo.

Np.:

$ db.bar.insert({ id: 1, words: {} });
$ db.bar.find({ id: 1 })
[ 
  {   ...,   "words" : {     },   "id" : 1   }
]
$ db.bar.update({ id: 1 }, { $inc: { 'words.foo': 1 } });
$ db.bar.find({ id: 1 })
[ 
  {   ...,   "id" : 1,   "words" : {   "foo" : 1   }   }
]
$ db.bar.update({ id: 1 }, { $inc: { 'words.foo': 1 } });
$ db.bar.find({ id: 1 })
[ 
  {   ...,   "id" : 1,   "words" : {   "foo" : 2   }   }
]


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kopiuj/klonuj kolekcję w MongoDB

  2. Mongodb Atlas:brak uprawnień administratora do wykonywania polecenia

  3. Jak wykonać zapytanie dotyczące obiektów, do których istnieją odwołania w MongoDB?

  4. mongodb - Skonstruuj DBRef za pomocą łańcucha lub ObjectId

  5. Jak korzystać z mangusty Obietnica - mongo