仅检索存储文档的相关部分

时间:2011-06-06 16:12:02

标签: mongodb

我是MongoDB的新手,我正在尝试存储在网站上执行的用户活动。我的数据目前的结构如下:

{ "_id" : ObjectId("4decfb0fc7c6ff7ff77d615e"), 
  "activity" : [
        {
                "action"    : "added",
                "item_name" : "iPhone",
                "item_id" : 6140,
        },
        {
                "action"    : "added",
                "item_name" : "iPad",
                "item_id" : 7220,        
        }
  ], 
  "name" : "Smith,
  "user_id" : 2 
}

如果我想检索有关item_id 7220的所有活动,我会使用如下查询:

db.find( { "activity.item_id" : 7220 } );

但是,这似乎返回整个文档,包括项目6140的记录。

有人可以建议如何正确完成这项工作吗?我不确定这是我的查询问题,还是数据本身的结构问题。

非常感谢。

1 个答案:

答案 0 :(得分:2)

您必须等待以下开发:https://jira.mongodb.org/browse/SERVER-828

只有知道元素的插入顺序和位置时,才能使用 $ slice

MongoDb上的标准查询始终返回所有文档。

(这里也有问题:MongoDB query to return only embedded document