gpt4 book ai didi

mongodb - 在 mongoDB 预测中添加新字段

转载 作者:行者123 更新时间:2023-12-02 16:55:52 26 4
gpt4 key购买 nike

我有一个如下所示的 mongo 系列(商店详细信息)...

{
_id: "",
storeName: "store1",
items: [
{
itemName: "mongo",
itemPrice: 20,
itemAvailablity: 100
},
{
itemName: "apples",
itemPrice: 50,
itemAvailablity: 70
}
]
},
{
_id: "",
storeName: "store2",
items: [
{
itemName: "banana",
itemPrice: 10,
itemAvailablity: 30
},
{
itemName: "apple",
itemPrice: 45,
itemAvailablity: 90
}
]
},
{
_id: "",
storeName: "store3",
items: [
{
itemName: "apple",
itemPrice: 10,
itemAvailablity: 30
},
{
itemName: "mongo",
itemPrice: 30,
itemAvailablity: 50
}
]
}

根据上述数据,我想获取特定商品的详细信息以及商店名称。

如果我想从所有商店获取“mongo”详细信息,那么我的预期输出将是这样的

[
{
itemName: "mongo",
itemPrice: 20,
itemAvailablity: 100,
storeName: "store1"
},
{
itemName: "mongo",
itemPrice: 30,
itemAvailablity: 50,
storeName: "store3"
}
]

我尝试使用不同的 mongo 聚合查询,但没有得到预期的输出

谁能帮我解决这个问题

谢谢

最佳答案

您可以通过此聚合实现此目的:

db.collection.aggregate([
{
$project: {
storeName: "$$CURRENT.storeName",
items: {
$filter: {
input: "$items",
as: "item",
cond: { $eq: ["$$item.itemName","mongo"] }
}
}
}
},
{ $unwind: "$items" },
{ $addFields: { "items.storeName": "$storeName"} },
{ $replaceRoot: { newRoot: "$items" }}
])

可以看到working here

关于mongodb - 在 mongoDB 预测中添加新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56454132/

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