0

我有类似的数组

messages: [{
                message: "message",
                from: someId,
                createdAt: Date.now(),
                read: false
              },
{
                message: "message",
                from: someId,
                createdAt: Date.now(),
                read: false
              },
...
]

如何获取与参数匹配的对象数量read === false

4

1 回答 1

2

由于您的消息是一个数组,您可以使用聚合框架来做到这一点:

db.collection.aggregate([
  {
    $addFields: {
      unread: {
        $size: {
          $filter: {
            input: "$messages",
            as: "message",
            cond: {
              $eq: [
                "$$message.read",
                false
              ]
            }
          }
        }
      }
    }
  }
])

你可以在这里测试

于 2020-04-09T10:06:46.683 回答