2015-06-30 118 views
0

我正在使用mongoimport導入一個json數組,並且它似乎是隨機地對數組中的鍵進行排序。Mongoimport維護JSON數組順序

例子:

{ "_id": "21178790T", "properties": { "OBJECTID": 3, "LINK_ID": 4685454, "NAME": "TEST" }} 

可能會插入爲

{ "_id": "21178790T", "properties": { "LINK_ID": 4685454, "OBJECTID": 3, "NAME": "TEST" }} 

我不想讓陣列中的字段,以進口時進行重新排序做。

編輯:技術上我使用

[ 
{ "_id": "21178790T", "properties": { "OBJECTID": 3, "LINK_ID": 4685454, "NAME": "TEST" }}, 
{ "_id": "21178791T", "properties": { "OBJECTID": 4, "LINK_ID": 4632354, "NAME": "TEST2" }} 
] 

,然後使用

C:\MongoDB\bin\mongoimport --db dbname -c collectionname --file "input.json" --jsonArray --maintainInsertionOrder 
+3

您正在堅持一個帶有屬性的OBJECT表示,該屬性排序應該不重要,也不應該假設它們將始終得到保證。如果您需要特定訂單,請使用數組表示法。 –

+0

我不能使用數組表示法,因爲我希望能夠查詢屬性,如'properties.LINK_ID ='是否有強制mongoimport的訂單? – ParoX

+0

如果您知道您正在查詢的密鑰,那麼爲什麼訂單很重要? –

回答

1

您沒有使用數組這裏都沒有。你有JSON對象不是JSON數組。 JSON對象上的屬性沒有明確的順序。你不應該期望Mongodb會維護財產秩序,你不應該依賴那些屬於特定順序的財產。

+0

問題是它確實是geojson格式,我將不得不將geojson屬性對象轉換爲屬性數組。 – ParoX

+0

反正有強迫mongoimport的訂單嗎? – ParoX

+0

沒有辦法強制對象的屬性順序。對象的屬性順序從來都不是問題。我很確定geoJson格式並不在乎這些屬性的順序。 – bhspencer