mongoimport + 点符号,子记录与 CSV 合并更新
mongoimport + dot notation, sub-record merge update with CSV
假设我有一条记录
{
_id: 100,
foo: {
bar: 0,
baz: 1
}
}
我想用 mongoimport 和 CSV
更新它
_id,foo.kek
100,9000
然而,
mongoimport --type csv --file myfile.csv --headerline --mode merge
将完全重写子 BSON 对象 foo:
{
_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,最简单的方法是修补代码以满足您的需求。否则,您可以将文件导入临时集合并使用您选择的语言合并它,或者编写自己的导入实用程序。
假设我有一条记录
{
_id: 100,
foo: {
bar: 0,
baz: 1
}
}
我想用 mongoimport 和 CSV
更新它_id,foo.kek
100,9000
然而,
mongoimport --type csv --file myfile.csv --headerline --mode merge
将完全重写子 BSON 对象 foo:
{
_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,最简单的方法是修补代码以满足您的需求。否则,您可以将文件导入临时集合并使用您选择的语言合并它,或者编写自己的导入实用程序。