您好,并提前感谢您的帮助。我无法在不同的帖子上找到这个问题或解决方案,如果我错过了,请告诉我。
我的问题是我在导出并导入到另一个集合后看到一些字段的$ type值更改。我在环境A的集合中有数据,我想将其导出并导入到不同的环境B.在查看环境A中的源数据时,所有类型的字段都正确地是64位整数($ type 18 - 来自docs)。但是,一旦将数据导入到环境B中,720个文档中的5个类型为$ 16(32位整数)。
环境A的输出:
mongos> db.myCollection.count()
720
mongos> db.myCollection.count({createTime : {$type : 16}})
0
mongos> db.myCollection.count({createTime : {$type : 18}})
720
使用等效命令从环境A导出数据:
mongoexport --host my.environment.a.host.com -d myDb -c myCollection -o outputFile.json
使用等效命令将数据导入环境B:
mongoimport --host my.environment.b.host.com -d myDb -c myCollection --file outputFile.json
查看环境B中的数据,我看到以下计数/类型:
db.plaAdGroupDoc.count()
0
db.productDoc.count({createTime:{$ type:16}})
5
db.productDoc.count({createTime:{$ type:18}})
715个
db.productDoc.count()
720
我不清楚为什么该字段的类型已从导入更改。而且,为什么只有一小部分领域发生了变化。任何见解将不胜感激。
谢谢!
编辑:已解决(无法在8小时内回答问题) 看看这个,似乎导入为32位整数($ type 16)的5个entires的值为0,而不是大值。这似乎是他们违反int而不是64位整数的原因。问题解决了。
希望这有助于其他人!
答案 0 :(得分:2)
如果要在两个mongoDB实例之间移动数据,则不应使用mongoexport并导入。这些工具旨在与外部系统交换数据。
使用mongodump和mongorestore - 它们使用bson
,这是MongoDB的原生格式,它们保留所有类型。