2016-11-17 65 views
0

我試圖在測試中填充內存mongo數據庫。 我正在使用mongo-java-driver 2.13.3使用https://docs.mongodb.com/manual/reference/method/db.eval/我可以在我的內存數據庫中運行javascript代碼。爲java測試填充mongo集合

使用mongoexport--out output.json flag我以extended json格式獲取所需的所有文檔。

然後我用db.myCollection.insert()包裝這些json文檔,並嘗試使用db.eval插入我的數據庫。

但由於這些文件已經擴展JSON格式,我發現了以下錯誤:

com.mongodb.CommandFailureException: { "serverUsed" : "localhost:12345" , "errmsg" : "exception: field names cannot start with $ [$oid] at src/mongo/shell/collection.js:147" , "code" : 16722 , "ok" : 0.0} 

我不知道是否有解決此問題的方法,或者我應該用其他的方法來實現這一目標。

這是什麼,我想插入一個例子:

db.keywords.insert({"_id":{"$oid":"53cd13a4e4b0d5282d586abf"},"name":"musculación","categoryId":{"$oid":"54180551d98ed9a5334110b3"},"photo":null,"created":{"$date":"2014-07-21T13:20:36.056Z"},"updated":{"$date":"2016-09-27T16:17:36.692Z"}}); 
+0

你可以發佈你插入的示例文檔嗎? – dyouberg

回答

0

我不知道的語法,但你的錯誤是蒙戈抱怨試圖插入一個「$」字符預留領域。

我想與您的文檔插件,並得到了同樣的錯誤:

> db.keywords.insert({ 
...  "_id": { 
...   "$oid": "53cd13a4e4b0d5282d586abf" 
...  }, 
...  "name": "musculación", 
...  "categoryId": { 
...   "$oid": "54180551d98ed9a5334110b3" 
...  }, 
...  "photo": null, 
...  "created": { 
...   "$date": "2014-07-21T13:20:36.056Z" 
...  }, 
...  "updated": { 
...   "$date":"2016-09-27T16:17:36.692Z" 
...  } 
... }) 
2016-11-17T10:13:18.263-0500 E QUERY [thread1] Error: field names cannot start with $ [$oid] : 
[email protected]/mongo/shell/collection.js:185:1 
[email protected]/mongo/shell/collection.js:189:13 
Bulk/[email protected]/mongo/shell/bulk_api.js:646:9 
[email protected]/mongo/shell/collection.js:271:13 
@(shell):1:1 

如果你修改它顯然會工作的語法 - 我不知道這是否是有效的與Java驅動程序,但你可以試試吧:

db.keywords.insert({ 
    "_id": ObjectId("53cd13a4e4b0d5282d586abf"), 
    "name": "musculación", 
    "categoryId": ObjectId("54180551d98ed9a5334110b3"), 
    "photo": null, 
    "created": ISODate("2014-07-21T13:20:36.056Z"), 
    "updated": ISODate("2016-09-27T16:17:36.692Z") 
}); 
+0

是的,它是一樣的http://stackoverflow.com/questions/22733243/cannot-import-a-json-in-mongodb,但我想知道是否有另一種方式來實現,而不需要手動更改$ id和$日期。可以從擴展json格式轉換爲mongo shell模式的東西 – ilopezluna