MongoDB / Mongoose:是否可以查询包含两个数组的对象的字段中的值?

时间:2018-11-26 23:38:49

标签: mongodb mongoose

此刻,我正在使用2个查询在字段(包含2个数组的对象)中搜索用户名值,然后将它们合并在一起。我似乎无法弄清楚如何编写一个查询来一次搜索两个数组并返回与任何数组中的给定username匹配的所有结果的查询。我想知道这是否可能?感谢您的输入!

Game.find({
    active: false,
    'current_players.team1': { $elemMatch: { $in: [username] } }
})

Game.find({
    active: false,
    'current_players.team2': { $elemMatch: { $in: [username] } }
})

这是我正在使用的架构:

var Game = mongoose.Schema({ 
    id: ...,
    ...,
    ...,
    current_players: {
        team1: Array        // [ 'jim', 'bob', 'sarah', null ]
        team2: Array        // [ 'peter', 'frank', null, 'simon']
    }
})

1 个答案:

答案 0 :(得分:0)

要在一个查询中搜索两个数组以查找此问题,可以使用$ or运算符。

db.collection.find({
"active": false,
$or: [
  {
    "current_players.team1": "username"
  },
  {
    "current_players.team2": "username"
  }
]

})