2016-04-05 20 views
0

ben bu şekilde ekledikten bu MongoDB veri var içinde yuvalanmış bir nesnede birden çok alan silme:Ekleme ve MongoDB

db.orders.insert({ _id: ObjectId().str, name: "admin", status: "online",catalog : [ 
    { 
     "objectid" : ObjectId().str, 
     "message" : "sold", 
     "status" : "open" 
    } 
]}) 

, ben gibi yapıyorum katalog nesnesine yeni alanlar eklemek İlk istiyorum Bu:

Bu kod bu hata ile başarısız
db.orders.update({"_id":"5703b86df3d607cb5fa75ff3"},{$set: {"catalog.0.day": "tuesday"},{"catalog.0.payments": "paypal"}}); 

:

2016-04-05T16:48:41.757+0300 E QUERY [thread1] SyntaxError: invalid property id @(shell):1:88 

Ayrıca bazı fi silmek istiyor elds ve ben bu kod ile bunu hazırlanıyorum: Neden güncelleme deyimi başarısız ve nasıl Eklediğim alanları silebilirsiniz

db.orders.update({"_id":"5703b86df3d607cb5fa75ff3"},{$unset: {"catalog.0.day": ""},{"catalog.0.payments": ""}}); 

?

cevap

1

kullanın bu $set için:

db.orders.update(
    {"_id":"5703b86df3d607cb5fa75ff3"}, 
    {$set: { 
      "catalog.0.day": "tuesday", 
      "catalog.0.payments": "paypal" 
     } 
    }); 

Ve buna $unset:

db.orders.update(
    {"_id":"5703b86df3d607cb5fa75ff3"}, 
    { 
     $unset: { 
      "catalog.0.day": "", 
      "catalog.0.payments": "" 
     } 
    }); 

sadece bir güncelleştirme çağrı kullanmak istiyorsanız, o zaman bunu yapabilirsiniz:

db.orders.update(
    {"_id":"5703b86df3d607cb5fa75ff3"}, 
    { 
     $unset: { 
      "catalog.0.day": "", 
      "catalog.0.payments": "" 
     }, 
     $set: { 
      "catalog.0.day": "tuesday", 
      "catalog.0.payments": "paypal" 
     } 
    }); 

Birden çok kayıt istiyorsanız, o zaman:

db.orders.update(
    {"status":"online"}, 
    { 
     $unset: { 
      "catalog.0.day": "", 
      "catalog.0.payments": "" 
     }, 
     $set: { 
      "catalog.0.day": "tuesday", 
      "catalog.0.payments": "paypal" 
     } 
    }, 
    { 
     multi: true 
    }); 

Bu kitapta, sorgu belgenizin daha genel bir alana dönüştüğünü unutmayın. ve

+0

İki sorgunun çalışması. Yine de bir qucik. 100 kayıtta bir koleksiyonum olduğunu söyleyelim. Eğer mysql, ben güncellemek ve spesifik kimliği, yani tüm 100 satırlar güncellenen doldurulan alanı bıraktı yeni 100 kayıtları güncelleyebilir. 100 kayıtları sadece bir sorgu ile güncellememi sağlamak için mongo'da böyle bir hüküm var mı? –

+0

Güncellenen yanıtın sorununuzu çözüp çözmediğini kontrol edin. –

+0

Bu senin yardımın için. –