我有这样的文档结构。
doc {
"_id": "customized str id"
"data": "BinData(0,"base64String");
}
db.test.find("_id":"1234-test").forEach(
function(doc) {
db.test.insert({_id":"1235-test"},{"data":doc.data});
}
);
我也试过了。
db.test.find("_id":"1234-test").forEach(
function(doc) {
db.test.insert({_id":"1235-test"},{"data":new BinData(0,doc.data)});
or db.test.insert({_id":"1235-test"},{"data":{"$binary":doc.data,"$type":0}});
}
);
除二进制字段外的结果返回。 有没有办法将二进制字段复制到重复的文档? 提前谢谢。
答案 0 :(得分:1)
这里有两件事错。
首先,insert()接受一个参数,即要插入的文档。 (你可能想要更新/ upsert吗?)所以你想要:
db.test.insert({_id":"1235-test", "data": doc.data})
其次,当数据来自文档时,数据已经是二进制BSON类型,因此您不需要对其进行编码或将其包装为BinData或其他任何内容。
> db.test.find({"_id": "1234-test"}).next().data
BinData(0,"base64String")
> typeof(db.test.find({"_id": "1234-test"}).next().data)
object
因此,要将其从一个文档复制到新文档:
db.test.find({"_id": "1234-test"}).forEach( function(doc) {
db.test.insert({"_id": "1235-test" , "data": doc.data})
})