如何获取列表中的特定字段

时间:2014-07-08 13:17:33

标签: mongodb scala

我有这段代码使用scala获取mongodb数据:

var user = User.findOneById(userId)
var userGroups = user.get.groups.filter(_.status == UserStatus.ACTIVE)

现在在userGroups列表中我只需要 groupIds ,我该怎么做?

我的收藏

{
   "_id": ObjectId("53bbb6579b82a1962039449"),
   "_t": "models.User",
   "email": "xxxxx@xxxxxx.com",
   "password": "xxxxx",
   "firstName": "monn",
   "lastName": "ria",
   "status": "Active",
   "receiveAlertsFlag": false,
   "created": ISODate("2014-07-08T09: 13: 59.572Z"),
   "updated": ISODate("2014-07-08T09: 13: 59.572Z"),
   "currentGroupId": ObjectId("507f191e810c19729de860ea"),
   "groups": {
     "0": {
       "_t": "models.UserGroup",
       "groupId"▼: ObjectId("53901c14655cf4a2a6b97c4eadee"),
       "name": "My Group",
       "status": "Active" 
    },
     "1": {
       "_t": "models.UserGroup",
       "groupId": ObjectId("53bbb6579b82a1962f780361eewr"),
       "name": "My Team2",
       "status": "Active" 
    } 

我想要达到的目标是:

var userGroups = user.get.groups.filter(_.status == UserStatus.ACTIVE).get.groupId

提前谢谢你们

1 个答案:

答案 0 :(得分:0)

在mongoDB的官方Scala驱动程序中,您可以像在Java中一样使用它,因为Scala驱动程序包装了Java驱动程序:

BasicDBObject keys = new BasicDBObject();
keys.put("groups.groupId", 1);

DBCursor cursor = users.find(new BasicDBObject(), keys);

http://mongodb.github.io/casbah/api/#com.mongodb.casbah.MongoCollection显示了多个可在集合类型对象上使用的find方法。

现在,因为您有一组组,您可能只想获得具有活动状态的元素的groupId值 - 在这种情况下,您需要使用聚合框架而不是使用项目的简单查找。 / p>