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

MongoDB - upsert, включващ списъци

Не можете да смесвате позиционния оператор ("$") и upsert; "$" ще се третира като име на поле по време на вмъкването. Не можете да направите това за нови документи, а само за съществуващ.

Предложих структура, по-подобна на тази:

{"_id" : ObjectId("4c28f62cbf8544c60506f11d"),
"some_other_data":"goes here",
"trips": { 
    "2010-05-10":
       [{"lat":21.321231, "lng": 16.8783234, "updated_at": "Mon May 10 2010 15:24:35"}, 
        {"lat":21.321231, "lng": 16.8783234, "updated_at": "Mon May 10 2010 15:24:24"}],
    "2010-05-08": 
       [{"lat":21.324239, "lng": 16.8735234, "updated_at": "Mon May 8 2010 11:18:05"},
        {"lat":21.311234, "lng": 16.8743271, "updated_at": "Mon May 8 2010 11:17:55"}, 
        {"lat":21.321238, "lng": 16.8782219, "updated_at": "Mon May 8 2010 11:17:45"}]
    }
}

След това можете да издадете актуализация като тази:

db.mycollection.update({application_id: "MyTestApp", "trips.2010-05-10":{$exists:true}},
                       {$push: {"trips.2010-05-10": {lat:11, lng:11} }}, 
                       true);

води до вмъкване на това.

> db.mycollection.find()
{ "_id" : ObjectId("4c2931d17b210000000045f0"), 
    "application_id" : "MyTestApp", 
    "trips" : { "2010-05-10" : [ { "lat" : 11, "lng" : 11 } ] } }

и стартирането му отново ви дава това:

> db.mycollection.find()
{ "_id" : ObjectId("4c2932db7b210000000045f2"), 
    "application_id" : "MyTestApp", 
    "trips" : { "2010-05-10" : 
        [ { "lat" : 11, "lng" : 11 }, 
          { "lat" : 11, "lng" : 11 } ] } }


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да конфигурирам моя MongoDB да взема предвид UTF-8?

  2. Mongo - заявка, вграденият документ не съвпада освен нотация с точка

  3. MongoDB - Помислете за дефиниране на bean от тип 'org.springframework.data.mongodb.repository.query.MongoEntityInformation' във вашата конфигурация

  4. Премахване на дубликат в MongoDB

  5. C# с mongodb DateTime Convert