MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

MongoDB - upsert yang melibatkan daftar

Anda tidak dapat mencampur operator posisi ("$") dan upsert; "$" akan diperlakukan sebagai nama bidang selama penyisipan. Anda tidak dapat melakukan ini untuk dokumen baru, hanya yang sudah ada.

Saya menyarankan struktur yang lebih seperti ini:

{"_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"}]
    }
}

Kemudian Anda dapat mengeluarkan pembaruan seperti ini:

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

menghasilkan penyisipan ini.

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

dan menjalankannya lagi memberi Anda ini:

> 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. Bagaimana cara mendapatkan nilai dari objek bersarang di luwak?

  2. Meteor:mengunggah file dari klien ke koleksi Mongo vs sistem file vs GridFS

  3. Bagaimana saya bisa mengambil datetime dari mongodb? Dengan membandingkan data dengan jDateChosser Java

  4. mongodb dump dan pipa ke nama db lain

  5. Ketika MongoDB memasukkan tanggal, itu mengubahnya menjadi UTC