如何在猫鼬中查询小于特定大小的子文档?

How to query a sub document that is less than a particular size in mongoose?

我有一个游戏对象,它有一个布尔值 isOpen 和一个包含玩家数组的子文档 players。我想找到一个开放供玩家加入且少于 5 名玩家的游戏。我该怎么做呢?最好不使用 $where

//made up sample for reference  
const sampleDocument = {
    isOpen: true,
    isOver: false,
    players : [{
        socketID: 'sldfjskdfjsjdfsdfj',
        isBot: false,
        name: 'NickName',
    }],
    startTime: 32343234

相关代码行

let game = await Game.findOne({isOpen: true, /*players : { $size: {$lt: 5} }*/})

你需要$expr.

db.collection.find({
  $expr: {
    $and: [
      {
        $eq: [
          "$isOpen",
          true
        ],
        
      },
      {
        $lt: [
          {
            "$size": "$players"
          },
          5
        ]
      }
    ]
  }
})