mongoimport +点符号,具有CSV
问题描述:
子记录合并更新
比方说,我有一个记录mongoimport +点符号,具有CSV
{
_id: 100,
foo: {
bar: 0,
baz: 1
}
}
,我想用CSV与mongoimport更新它
_id,foo.kek
100,9000
然而,
mongoimport --type csv --file myfile.csv --headerline --mode merge
会重写sub-BSON对象富完全:
{
_id: 100,
foo: {
kek: 9000
}
}
有没有办法做部分更新
{
_id: 100,
foo: {
bar: 0,
baz: 1,
kek: 9000
}
}
与mongoimport?有没有其他有效的方法来做到这一点(我有数百万条记录)?
MongoDB的服务器版本:3.0.14
mongoimport版本:r3.4.2
提前感谢!
答
这是不可能与mongoimport。
--mode merge
$set
就是全部文件:
_, err = up.collection.Upsert(selector, bson.M{"$set": document})
最简单的方法是打补丁的代码来定制您的需求,如果你有golang成立。否则,您可以将文件导入临时集合并使用您选择的语言进行合并,或者编写自己的导入实用程序。
感谢您的回应和建议。我知道我可以用任何编程语言来做,只要有一个体面的mongo驱动程序,我只希望这可以用一些工具或简单的黑客来完成。 – Anton