sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB - Tilføjelse til et sæt og stigning

Hvis du er villig til at skifte fra en liste til hash (objekt), kan du atomært gøre dette.

Fra dokumenterne :"$inc ... øger feltet med talværdien, hvis feltet er til stede i objektet, ellers indstiller feltet til talværdien."

{ $inc : { field : value } }

Så hvis du kunne omstrukturere din beholder og objekt:

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

til:

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

du kan bruge operationen update med:

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

hvilket ville skabe { 'foo': 1 } hvis 'foo' ikke eksisterer, ellers øges foo.

F.eks.:

$ 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. MongoDB kopierer et felt til en anden samling med en fremmednøgle

  2. Sådan bruger du Node.js til at oprette en SSH-tunnelforbindelse til en MongoDB-database

  3. Sådan fjerner du en ubekræftet bruger med Mongoose og TTL

  4. før og efter fjernelse af Middleware udløses ikke