sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB - Lägger till en uppsättning och ökar

Om du är villig att byta från en lista till hash (objekt) kan du atomärt göra detta.

Från dokumenten :"$inc ... ökar fältet med siffervärdet om fältet finns i objektet, annars sätts fältet till siffervärdet."

{ $inc : { field : value } }

Så, om du kunde omstrukturera din behållare och objekt:

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

till:

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

du kan använda operationen update med:

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

vilket skulle skapa { 'foo': 1 } om 'foo' inte finns, öka annars foo.

T.ex.:

$ 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. Skapa ett Multikey Index i MongoDB

  2. Strömma frågeresultat med den inbyggda mongoDB-drivrutinen för nod

  3. Det effektivaste sättet att få allt värde för ett fält i MongoDB &Node.js

  4. MongoDB $nin Query Operator