查找共享相同“日期”值的 3 个或更多文档集

我需要从 API 返回“blocked-days”,这意味着在“orders”集合文档的“shippingDate”值中重复至少 3 次的日期。

示例:

{
shippingDate: 'sunday'
},{
shippingDate: 'monday'
},{
shippingDate: 'sunday'
},{
shippingDate: 'tuesday'
},{
shippingDate: 'wednesday'
}

将返回 ['sunday']

mdxdr 回答:查找共享相同“日期”值的 3 个或更多文档集

您可以使用这样的聚合:

  • $group 按天数添加,使用 $sum 获得每天出现的次数。
  • $match 一天至少出现 3 次
  • $project 仅返回当天的名称。
db.collection.aggregate([
  {
    "$group": {
      "_id": "$shippingDate","days": {
        "$sum": 1
      }
    }
  },{
    "$match": {
      "days": {
        "$gte": 3
      }
    }
  },{
    "$project": {
      "days": 0
    }
  }
])

哪个返回

[
  {
    "_id": "sunday"
  }
]

MongoDB 使用 JSON 格式,因此您可以检索 JSON 格式。使用猫鼬你可以试试这个:

const queryResult = [
  {
    "_id": "sunday"
  }
]

const desiredValue = queryResult.map(m => m._id)

console.log(desiredValue)

示例Chunk

本文链接:https://www.f2er.com/5999.html

大家都在问