gpt4 book ai didi

mongodb - Mongodb $filter(聚合)只获取数组的一个元素

转载 作者:行者123 更新时间:2023-12-05 04:08:12 25 4
gpt4 key购买 nike

我用 mongodb 做了一些过滤,但它返回了我数组中的所有数据。但我只想从该数组中获取特定元素。我在文档中找不到它。

db.sales.aggregate([
{
$project: {
items: {
$filter: {
input: "$items",
as: "item",
cond: { $gte: [ "$$item.price", 100 ] }
}
}
}
}
])

运行上面的命令,这就是结果

{
"_id" : 0,
"items" : [
{ "item_id" : 2, "quantity" : 1, "price" : 240 }
]
}

问题是我只想得到价格

  {
"_id" : 0,
"items" : [
{ "price" : 240 }
]
}

甚至

{
"price" : 240
}

怎么做?

最佳答案

您实际上需要 $map 来“改变”返回的数组元素,因为 $filter 仅“选择”“匹配”的数组元素。尝试运行以下代码。

ds.sales.aggregate([
{
$project: {
items: {
$map: {
input: {
$filter: {
input: "$items",
as: "item",
cond: { $gte: [ "$$item.price", 100 ] }
}
},
"as": "a",
"in": {
"price": "$$a.price"
}
}
}
}
}], function (err, list) {
...

关于mongodb - Mongodb $filter(聚合)只获取数组的一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47784521/

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