2012-01-11 107 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

相关问题