我正在尝试使用导出/导入在 MongoDB 数据库之间移动一些数据。我有一个包含数组字段的嵌入式文档,我想用它来更新另一个数据库。
我的第一个问题是尝试从嵌入文档中只导出我需要的字段,我可以获得整个子文档,但不仅仅是我想要的字段。好吧,那不是表演的终结者。这是我的导出命令;
mongoexport -d mydb -c mycollection -o ~/temp/mongoexport/myexport.json -f id_field,subdoc_field2 -q '{$query:{"subdoc.subfield":{"$exists":true}}}'
我得到看起来像这样的东西
{ "_id" : { "$oid" : "5060f491585dc52991000002" }, "id_field" : "R0410202", "subdoc" : [ { "_id" : { "$oid" : "50eb073d585dc586d600363e" },"subdoc_field1": "value1", "subdoc_field2": [intval1, intval2]}]}
{ "_id" : { "$oid" : "5060f491585dc52991000003" }, "id_field" : "R0410202", "subdoc" : [ { "_id" : { "$oid" : "50eb073d585dc586d600364d" },"subdoc_field1": "value2", "subdoc_field2": [intval3, intval4]}]}
当我尝试导入它时,它不会更新匹配的文档。这是我的命令;
mongoimport -c mycollection --db assr3_production --file ~/temp/mongoexport/myexport.json -f subdoc_field2 --upsert --upsertFields id_field
我收到一条错误消息“无法更改文档的 _id”。我并没有尝试更改 ID,但它似乎无论如何都在尝试。
有没有办法让导出不包含 ID,或者让导入忽略它们?谢谢你的帮助!