我有一个这样的 MongoDB 集合,其中包含游戏玩家的详细信息:
{
...
"fields" : {
"playername" : "Koala",
...
}
...
}
我想在一个数组中获取玩家的 ID。因此,例如,我这样做:
// players: ["Koala", "Cactus"]
Criteria base = Criteria.where("fields.playername").in(players);
DBObject match = base.getCriteriaObject();
List<?> userDetailIds = playersCollection.distinct("_id", match);
太好了,我有一个对象列表 ( com.mongodb.BasicDBList
) ( )。但现在我想在新查询中使用该列表,例如,获取这些玩家的所有徽章。徽章收藏:ObjectId
org.bson.types.ObjectId
$in
{
"badgeName": "MongoDB Killer",
"userDetailID" : "525c4be1975ac2a8f4a64c6f"
...
}
在 Java 中:
mongo.find(Query.query(Criteria.where("userDetailID").in(userDetailIds)), Badges.class);
这不起作用,因为userDetailIds
包含ObjectId
对象并且userDetailID
是一个String
字段。如何使用 BasicDBList 作为$in
参数?或者:我可以得到一个String
ID 数组而不是ObjectId
s 吗?
谢谢!
PD。我不想遍历列表以将其转换为List<String>
.