MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Проверете дали съществува стойност в колекцията mongo

Първо, ако съхранявате документите си като масив, защо просто не ги съхранявате като масив? Ако идвате от фон на релационна база данни, разбирам как бихте се изкушили да я съхранявате по този начин, но в Mongo, ако е като масив, трябва просто да се съхранява като масив.

{
    "_id" : ObjectId("52e5361f30f28b6b602e4c7f"),
    "0" : "h",
    "1" : "o",
    "2" : "m"
}

Трябва да бъде:

{
    "_id" : ObjectId("52e5361f30f28b6b602e4c7f"),
    "keys" : [ "h", "o", "m" ]
}

В този случай Mongo има удобен оператор, наречен $addToSet това ще работи точно като $push освен че ще го добави към масива само ако не съществува. Операцията ще изглежда така:

collection.update( query, { $addToSet : { 'keys' : 'l' }}, callback );
// add key 'l'

collection.update( query, { $addToSet : { 'keys' : 'm' }}, callback );
// looks in document, sees 'm' in array, and does nothing

РЕДАКТИРАНЕ:

С актуализацията ще добави ключа към масива, ако не е там, но ако САМО искате да знаете дали съществува или не, мисля, че най-добрият начин би бил да използвате findOne :

// find the doc by _id  and the value you want in keys, returns null if it's not a match
collection.findOne({ _id : 52e5361f30f28b6b602e4c7f, 'keys' : 'l' }, function(err, doc) {
    if( doc == null ) {
        // do whatever you need to do if it's not there
    } else {
        // do whatever you need to if it is there
    }
    db.close();
}

За да запазите вашата вложка такава, каквато е, трябва просто да промените Keys до:

Keys = { 'keys' : [ 'key1', 'key2', 'key3' ] };

И вложката не трябва да се променя иначе. Освен това във вашата колекция може да искате да промените _id да бъде username или добавете username поле към вашия документ.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mgo - производителността на заявката изглежда постоянно бавна (500-650ms)

  2. Каква е разликата между changeStream и tailable курсор в MongoDB

  3. Използвайте променлива с регулярен израз, за ​​да намерите данни в mongodb (приложение Meteor)

  4. Мога ли да прочета csv файл вътре в Javascript файл на Mongo Shell?

  5. Не може да се свърже с MongoDB