2012-01-11 105 views
1

爲什麼當我做一個findOne(與find相同)時,它是否只顯示我的「acts」數組中的最後一項。我的收藏只包含一個文件用於測試目的。MongoDB:爲什麼find和findOne只返回最後一個數組元素?

我在mongo cli中這樣做:db.mycollection.findOne();

我findOne()的結果:

{ 
    "_id" : ObjectId("4f0db64659d044892271018f"), 
    "title" : "Awards Show 2012", 
    "description" : "An amazing awards show", 
    "acts" : [ 
     { 
      "name" : "Act 3", 
      "description" : "My act description" 
     } 
    ] 
} 

這裏是我的文檔:

{ 
    "_id": { "$oid" : "4F0DB64659D044892271018F" }, 
    "title": "Awards Show 2012", 
    "description": "An amazing awards show", 
    "acts": [ 
    { 
     "name": "Act 1", 
     "description": "My act description" 
    }, 
    { 
     "name": "Act 2", 
     "description": "My act description" 
    }, 
    { 
     "name": "Act 3", 
     "description": "My act description" 
    } 
    ] 
} 

編輯:修正了文件 - 有一個錯字

+2

如果'findOne'返回一個只有一個項目的文檔,'find'也一樣,你怎麼知道'你的文檔'在數據庫中? – mnemosyn 2012-01-11 19:09:23

+0

因爲我也在使用MongoHub(gui for mac)。我可以瀏覽我的收藏並擴展我的文檔。屏幕截圖:http://i.imgur.com/uEojd.png – k00k 2012-01-11 19:15:12

+0

我想我可能已經發現了這個問題。我不認爲這個文檔是由MongoHub正確插入的。故障排除,我會盡快回復更多細節。 – k00k 2012-01-11 19:21:10

回答

3

MongoHub真的是馬車。請不要使用它。 RockMongo和Genghis相當不錯。

+0

是的,這是MongoHub搞砸了。我通過MongoHub插入,它說它插入了所有的數組元素,甚至在一個find中返回,但Mongo客戶端證明是不同的。我會看看RockMongo和Genghis。 – k00k 2012-01-12 16:43:59

+0

剛剛檢查出來。我更喜歡Mac的GUI,所以我不必依靠rails或PHP。 – k00k 2012-01-12 16:45:34

+0

不幸的是,Mac還沒有一個非常好的GUI。有一個很好的Windows特定的稱爲MongoVUE,但這不會幫助你。 在大多數情況下,網頁的跨平臺使用進一步。 – 2012-01-13 00:25:30

相關問題