2012-09-26 40 views
14

我們使用mongo db來存儲生產數據庫中的某些記錄。

我們看到有在生產數據庫"_id" : { "$oid" : "50585fbcb046b2709a534502"}我們的記錄,而我們的QA數據庫中看到相同的記錄作爲"_id" : ObjectId(" 50585fbcb046b2709a534502 ")。 對於日期,我們在產品數據庫中看到"ld" : { "$date" : "2011-12-03T17:00:00Z"},而在qa數據庫中看到"ld" :ISODate("2011-12-03T17:00:00Z")。 我們已經在qa環境中成功測試了我們的查詢,但是擔心它可能會在生產中失敗

1)我的java查詢能否在產品qa上無縫工作? (我正在使用morphia apis進行查詢) 2)它們是否以相同的方式存儲在內部?

+0

對於任何試圖從mongo命令行客戶端獲取普通JSON(例如,'{「$ oid」:x}'而不是'ObjectId(x)')的用戶,請使用'mongoexport' – rakslice

回答

17

要回答兩個問題:

  1. 是的,他們會
  2. 是的,他們都是一樣的,它僅僅是您正在尋找在(控制檯或應用程序)的項目中表示爲它們的顯示方式。控制檯(無論如何,更高版本,大約1.4+)將顯示ObjectIdISODate(通常),而直接從服務器語言(在您的情況下,Java)挑出它往往會顯示完整的對象屬性(在這種情況下,$oid$date)。
+0

因此它與任何驅動程序版本無關?它實際上是數字,因爲在'prod'中我們使用工具來查看數據,在「qa」中我們使用命令行查看插入的數據。 –

+0

@KumarManish nah所有的驅動程序版本都應該在這方面保持一致,而且該工具只是以完全普通的格式抓取數據(或者甚至在它們的末端翻譯它以使其看起來像這樣),而控制檯將所有對象您的文檔 – Sammaye

+0

我剛剛通過某人手動登錄到生產數據庫進行了驗證,我確實看到qa&prod版本完全顯示爲sa我。 –

相關問題