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" } ] }
グループは 2 つだけにする必要があります。では、mongoimport は深くネストされたキーの指定された順序を維持できますか?