1
我有我試圖導入到MongoDB的一些測試數據:可以mongoimport維護深嵌套鍵的指定順序嗎?
{ "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可以保持深嵌套鍵的指定順序嗎?