【问题标题】:How to query a sub document that is less than a particular size in mongoose?如何在猫鼬中查询小于特定大小的子文档?
【发布时间】:2022-02-16 11:12:28
【问题描述】:

我有一个游戏对象,它有一个布尔值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} }*/})

【问题讨论】:

  • 你能展示示例文档吗?
  • 对于发布的示例文档,players 不是一个数组字段——它只是一个子文档。

标签: javascript node.js mongodb mongoose


【解决方案1】:

你需要$expr

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

【讨论】:

猜你喜欢
  • 2015-06-26
  • 2016-07-30
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
  • 2019-10-19
  • 2014-03-21
  • 1970-01-01
  • 2020-07-02
相关资源
最近更新 更多