sql >> Database >  >> NoSQL >> MongoDB

MongoDB - Toevoegen aan een set en verhogen

Als je bereid bent om van een lijst naar hash (object) over te schakelen, kun je dit atomair doen.

Van de docs :"$inc ... verhoogt het veld met de getalswaarde als het veld aanwezig is in het object, anders stelt het veld in op de getalswaarde."

{ $inc : { field : value } }

Dus als u uw container en object zou kunnen refactoren:

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

naar:

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

je zou de operatie update kunnen gebruiken met:

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

die { 'foo': 1 } . zou creëren als 'foo' niet bestaat, verhoog dan foo.

Bijv.:

$ 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. $add met enkele velden als Null en geeft de somwaarde als Null

  2. Maak op betrouwbare wijze opnieuw verbinding met MongoDB

  3. Callback-functie wordt nooit aangeroepen nadat Mongoose-query is uitgevoerd

  4. Wilt u een incrementele back-up maken voor mongodb. Journalen? Oplog?