2013-07-17 43 views
1

我的數據庫結構的樣子:MongoDB的更新只有特定的子元素

{ 
    "_id" : ObjectId("51e66873f6a6600436000001") 
    ,"email" : "[email protected]", 
    ,"attribute_group_a" : { 
    "attribute_a" : "" 
    ,"attribute_b" : "" 
    ,"attribute_c" : "" 
    ,"attribute_d" : "" 
    }, 
    ,"attribute_group_b" : { 
     "attribute_subgroup_b_a" : { 
      "attribute_a" : "" 
      ,"attribute_b" : "" 
      ,"attribute_c" : "" 
      ,"attribute_d" : "" 
     } 
     ,"attribute_subgroup_b_b" : { 
      "attribute_a" : "" 
      ,"attribute_b" : "" 
      ,"attribute_c" : "" 
      ,"attribute_d" : "" 
     } 
    } 
} 

因此可以說,我想更新att_subgrp_b_a:

exports.updateProfil = function(req, res, item, callback) { 
    var email = req.session.email; 
    db.collection('profiles', function(err, collection) { 
     collection.update({"email": email},{$set: item}, function(err, result) 

的VAR 「項目」 的模樣:

{ 
    attribute_group_b: 
    { 
     attribute_subgroupgroup_b_a: 
     { 
      att_a: "xy" 
      ,att_b: "xy" 
     } 
    } 
} 

當我現在更新文件=>它刪除attr_group_b中的所有內容,並將其替換爲「item」

這意味着attr_subgrp_b_b完全消失,且沒有更新




所有其他屬性(attr_subgrp_b_a的),我想,它會在「項目」的屬性,替換它們到數據庫,讓所有其他OBJ不變

回答

1

嘗試以下

var email='emailid'; 
    var item='whichuwanttoupdate'; 
    collection.update(
      {"email": email}, 
      {$set:{'attribute_group_b.attribute_subgroup_b_a':item}}, 
      function(err,result){ 

    }); 
+0

語法錯誤的查詢:意外的標記「。 「 - 但不錯的想法=) – Pika

+0

@皮卡上面的代碼應該工作...看到這個文檔http://docs.mongodb.org/manual/reference/glossary/#term-dot-notation – sachin

+0

omg sry我錯過了引號>。< - 很好,謝謝 – Pika