gpt4 book ai didi

javascript - 如何根据 mongodb 中的值对数组中的文档进行计数?

转载 作者:行者123 更新时间:2023-11-30 06:12:51 25 4
gpt4 key购买 nike

我需要统计车位数量_id:5d752c544f4f1c0f1c93eb23,excluded属性中的值为false,如何挂载查询?

到目前为止,我已经能够使用 excluded: false 属性选择 parking 位的数量。而是从所有 parking 场中选择

注意有两个文档代表一个 parking 场,每个文档都有一个数组parkingSpaces,用来记录 parking 位文档。

第一个文档有2个空缺不排除,所以属性excluded: false,第二个只有一个空缺,也不排除。

{
"_id": "5d752c544f4f1c0f1c93eb23",
"name": "estacionamento um",
"parkingSpace": [
{
"_id": "5d752cf54f4f1c0f1c93eb26",
"name": "vg001",
"excluded": true

},
{
"_id": "5d752cf54f4f1c0f1c93eb27",
"name": "vg001",
"excluded": false

},
{
"_id": "5d75339bc411423a9c14ac52",
"name": "vg002",
"excluded": false
}
]
},
{
"_id": "5d7706b60d354b72388a38f4",
"name": "estacionamento dois",
"parkingSpace": [
{
"_id": "5d77078a5173bb63bc87b7ca",
"name": "vg004",
"excluded": false
}
]
}

我需要添加车位数量_id:5d752c544f4f1c0f1c93eb23,在excluded属性中的值为false。

最后需要返回值2,指的是_id:5d752c544f4f1c0f1c93eb23个 parking 位,excluded属性中的值为false。

到目前为止,通过以下查询,我能够选择具有 false 值的 excluded 属性的空位,但它是从所有 parking 场中选择的。

const registeredParkingSpaces = await Parking.aggregate([
{ $unwind: '$parkingSpace' },
{ $match: { 'parkingSpace.excluded': false } },
{
$group: {
_id: parking_id,
total: { $sum: 1 }
}
}
]);

返回:

{
"message": [
{
"_id": "5d752c544f4f1c0f1c93eb23",
"total": 3
}
]
}

但它需要返回:

{
"message": [
{
"_id": "5d752c544f4f1c0f1c93eb23",
"total": 2
}
]
}

最佳答案

在聚合中,首先您与 id 匹配,然后进行下一步,您将得到您想要的计数,因为此时您正在考虑整个文档“parkingSpace”。下面是示例代码,我想它对你有用

const ObjectId = require('mongoose').Types.ObjectId;
const registeredParkingSpaces = await Parking.aggregate([
{ $match: { _id: objectId(body.id) } }
{ $unwind: '$parkingSpace' },
{ $match: { 'parkingSpace.excluded': false } },
{
$group: {
_id: parking_id,
total: { $sum: 1 }
}
}
]);

关于javascript - 如何根据 mongodb 中的值对数组中的文档进行计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57886133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com