【问题标题】:Can mongoimport maintain the specified order of deep nested keys?mongoimport 可以维护深度嵌套键的指定顺序吗?
【发布时间】:2015-07-15 14:50:48
【问题描述】:

我有一些测试数据正在尝试导入 MongoDB:

{ "name": "A3", "year": "1999", "parts": { "oil filter": { "type": 2, "partno": "123" }, "air filter":{ "type": 6, "partno": "gf6" } }}
{ "name": "A3", "year": "2000", "parts": { "oil filter": { "type": 2, "partno": "123" }, "air filter":{ "type": 6, "partno": "gf6" } }}
{ "name": "A3", "year": "2001", "parts": { "oil filter": { "type": 2, "partno": "123" }, "air filter":{ "type": 6, "partno": "gf6" } }}
{ "name": "A3", "year": "2002", "parts": { "oil filter": { "type": 2, "partno": "123" }, "air filter":{ "type": 6, "partno": "gf6" } }}
{ "name": "A3", "year": "2003", "parts": { "oil filter": { "type": 2, "partno": "557" }, "air filter":{ "type": 6, "partno": "gf4" } }}
{ "name": "A3", "year": "2004", "parts": { "oil filter": { "type": 2, "partno": "557" }, "air filter":{ "type": 6, "partno": "gf4" } }}

如果我使用 db.cars.insert() 插入行,所有嵌套字段都会完全按照显示的顺序出现。但是,如果我使用 mongoimport 导入这些行,顺序就会混乱:

{ "name" : "A3", "year" : "1999", "parts" : { "oil filter" : { "type" : 2, "partno" : "123" }, "air filter" : { "type" : 6, "partno" : "gf6" } } }
{ "name" : "A3", "year" : "2000", "parts" : { "air filter" : { "type" : 6, "partno" : "gf6" }, "oil filter" : { "type" : 2, "partno" : "123" } } }
{ "name" : "A3", "year" : "2001", "parts" : { "air filter" : { "type" : 6, "partno" : "gf6" }, "oil filter" : { "type" : 2, "partno" : "123" } } }
{ "name" : "A3", "year" : "2002", "parts" : { "oil filter" : { "type" : 2, "partno" : "123" }, "air filter" : { "type" : 6, "partno" : "gf6" } } }
{ "name" : "A3", "year" : "2003", "parts" : { "oil filter" : { "type" : 2, "partno" : "557" }, "air filter" : { "type" : 6, "partno" : "gf4" } } }
{ "name" : "A3", "year" : "2004", "parts" : { "oil filter" : { "type" : 2, "partno" : "557" }, "air filter" : { "type" : 6, "partno" : "gf4" } } }

这意味着如果我想检查哪些文档具有相同的嵌套“部分”,我无法正确比较它们。

> db.cars.aggregate([
... { $group: {
... _id: { name: "$name", parts: "$parts" },
... models_in_group: { $push: { year:"$year" } },
... } },
... ])
{ "_id" : { "name" : "A3", "parts" : { "air filter" : { "type" : 6, "partno" : "gf6" }, "oil filter" : { "type" : 2, "partno" : "123" } } },  "models_in_group" : [ { "year" : "2000" }, { "year" : "2001" } ] }
{ "_id" : { "name" : "A3", "parts" : { "oil filter" : { "type" : 2, "partno" : "557" }, "air filter" : { "type" : 6, "partno" : "gf4" } } },  "models_in_group" : [ { "year" : "2003" }, { "year" : "2004" } ] }
{ "_id" : { "name" : "A3", "parts" : { "oil filter" : { "type" : 2, "partno" : "123" }, "air filter" : { "type" : 6, "partno" : "gf6" } } },  "models_in_group" : [ { "year" : "1999" }, { "year" : "2002" } ] }

应该只有两组。那么,mongoimport 能否保持深度嵌套键的指定顺序?

【问题讨论】:

    标签: mongodb nested mongoimport


    【解决方案1】:

    很遗憾,无法给出特定顺序,这是因为您导入的是 JSON 对象而不是 JSON 对象数组。

    我认为成功的唯一方法是编写一个为您执行此操作的例程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 2018-11-22
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多