在MongoDB中替换类型

在MongoDB中替换类型,mongodb,Mongodb,我有一个MongoDB数据库,在这里我试图用一个连接字符串替换特定元素的所有数组。目前,大多数文档都有一个字符串数组。我需要一个脚本,可以找到每个有数组的文档(有些已经手动更新),并用当前数组的串联替换该数组 到目前为止,我已经: var cursor = db.recipe.find({ directions: { $type : 4 } }); while ( cursor.hasNext() ) { var doc = cursor.next(); db.recipe.up

我有一个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。

是一个聚合运算符。要简单地查找和更新,请使用纯javascript

目前,大多数文档都有一个字符串数组。我需要一个脚本,将找到有一个数组的每个文档

$type:4
应用于数组时,它会依次检查
方向
字段中的任何元素是否为数组,只有找到一个元素时才会返回true

例如:对于输入
[“x”,“y”]
它将返回
false
,对于
[[“x”],“y”]
它将返回
true

由于数组只包含字符串,因此需要使用运算符查找类型

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}});
})