2014-12-05 58 views
1

我有一個MongoDB數據庫,我試圖用連接字符串替換特定元素的所有數組。目前,大多數文檔都有一串字符串。我需要一個腳本來查找每個包含數組的文檔(有些已經手動更新),然後將該數組替換爲當前內容的串聯。在MongoDB中替換類型

到目前爲止,我有:

var cursor = db.recipe.find({ directions: { $type : 4 } }); 
while (cursor.hasNext()) { 
    var doc = cursor.next(); 
    db.recipe.update(
     { _id : doc._id }, 
     { $set : { directions : { $concat : { doc.directions } } } } 
    ); 
}; 

不幸的是,它不斷抱怨意外 ''。我假設我正確使用$ concat。

回答

2

$concat是一個聚合運算符。要簡單地查找和更新,請使用普通的javascript。

當前,大多數文檔都有一個字符串數組。我需要一個腳本,將依次檢查僅發現每次有一個數組

的文件當您申請$type:4到一個數組,它如果有任何directions領域內的元素是一個數組,它找到一個它返回true。

例如:對於輸入["x","y"]它將返回false,並且對於[["x"],"y"]它將返回true

由於數組只包含字符串,因此需要使用$where運算符來查找類型。

db.recipe.find({$where:"Array.isArray(this.directions)"}).forEach(function(doc){ 
var value = doc.directions.join(); 
db.recipe.update({"_id":doc._id},{$set:{"directions":value}}); 
})