2
我有一個集合的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);
太好了,我有ObjectId
對象(org.bson.types.ObjectId
)的列表(com.mongodb.BasicDBList
)。 但是現在我想在新的$in
查詢中使用該列表,例如,獲取這些玩家的所有徽章。徽章收藏:
{
"badgeName": "MongoDB Killer",
"userDetailID" : "525c4be1975ac2a8f4a64c6f"
...
}
在Java:
mongo.find(Query.query(Criteria.where("userDetailID").in(userDetailIds)), Badges.class);
這是不行的,因爲userDetailIds
包含ObjectId
對象和userDetailID
是String
場。 如何使用BasicDBList作爲$in
參數? OR: 我可以得到一組String
ID而不是ObjectId
s嗎?
謝謝!
PD。我不想遍歷列表將其轉換爲List<String>
。
您好,感謝!但是我正在尋找一種不需要遍歷'objIds'的解決方案。我能否獲得'列表'而不是'列表'?有沒有辦法直接在第二個查詢中使用'objIds'? –
Roi