2015-03-25 42 views
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可以保持深嵌套鍵的指定順序嗎?

回答

0

不幸的是,無法給出特定的順序,這是因爲您正在導入JSON對象而不是JSON數組對象。

我認爲唯一的辦法就是製作一個能爲你做的例程。