我有这段代码使用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
提前谢谢你们
答案 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>