搜索在数组中具有特定属性的元素

时间:2014-02-03 08:00:24

标签: javascript mongodb

我的mongo集合的一个元素具有以下模式(并代表一个扑克手)。

{
    "players":
        [
            {"active":true,"seat":1,"stack":1769,"screenName":"schla"},
            {"active":true,"seat":3,"stack":2000,"screenName":"galgegla"},
            {"active":true,"seat":4,"stack":483,"screenName":"khrier"},
            {"active":true,"seat":5,"stack":2813,"screenName":"frrou4535"},
            {"active":true,"seat":6,"stack":4002,"screenName":"Guabounai"}
        ],
    "rounds":[],
    "gameNum":"1030564654564",
    "time":"2013/12/21 21:12:03"
}

我想在我的收藏中搜索至少有一次玩家在玩家阵列中使用screenName “galgegla”的玩家。

2 个答案:

答案 0 :(得分:1)

试试这个:

a.filter(function(arr){
    return arr.players.filter(function(player){
        return player.screenName == 'galgegla';
    }).length;
});

假设a是这些对象的数组。

它根据天气过滤对象数组,或者不对象的玩家数组上的过滤器返回任何结果。

...但当然我没有考虑mongo的原生功能,所以另一个答案会更有效。 (但可能效率不高)

答案 1 :(得分:1)

假设您的收藏品名为“手”,您可以执行以下操作:

db.hands.find( { 'players.screenName': 'galgegla' } )

请参阅“匹配字段而不指定数组索引”下的示例:http://docs.mongodb.org/manual/tutorial/query-documents/#match-a-field-without-specifying-array-index