2015-05-08 82 views
4

我必須交換文檔的值。mongodb set null in update

var query = {"_id" : ObjectId("53e1c254382f891cc600076d")}; 

db.properties.find(query).forEach(function(prop){ 
    printjson({"_id":prop._id, "val":prop.val, "ua":prop.ua}); 
    db.properties.update(query, {$set:{ua: prop.val}},{$unset:{val:""}}); 
}); 

更新操作之前,文件看起來是這樣的:

{ 
    "_id" : ObjectId("53e1c254382f891cc600076d"), 
    "val" : 9876541, 
    "ua" : null 
} 

以及更新後變爲:

{ 
    "_id" : ObjectId("53e1c254382f891cc600076d"), 
    "val" : 9876541, 
    "ua" : 9876541 
} 

但我希望它是:

{ 
    "_id" : ObjectId("53e1c254382f891cc600076d"), 
    "val" : null, 
    "ua" : 9876541 
} 

但它不工作。也設置"val" null ({$set:{val:null}})直接刪除我的整個文檔。

回答

5

設置undefined,它像一個魅力工作!

db.properties.find(query).forEach(function(prop){ 
    db.properties.update(query, {$set:{ua: prop.val, val:undefined}}); 
});