gpt4 book ai didi

mongodb - 使用带有 id 内部聚合 mongodb 的数组上的 where

转载 作者:行者123 更新时间:2023-12-04 07:38:14 24 4
gpt4 key购买 nike

嗨,我真的很难找到解决方案。
我试图查看一个数组是否包含我给出的值
我想要特定组织的所有门票。
该组织保存在用户(创建者)中的一个名为organizations 的数组中。
楷模

ticket {
creator: "ObjectId"
}

user {
organizations: ["ObjectId", "ObjectId"]
}
这就是我现在所拥有的
    Ticket.aggregate([
{
"$lookup": {
"from": User.collection.name,
"localField": "creator",
"foreignField": "_id",
"as": "creator"
}
},
{ "$unwind": "$creator" },
{ "$match": { "creator.organizations": {
"$elemMatch": {"$in": ["60a77d5b57d8c960829a0343"]}}}
},
{ "$set": {"creator": "$creator._id"}},
])
这行不通
我读到你不能在聚合中使用 $elemMatch ,因为它是一个查询。
我如何实现这一目标?我见过有人说要使用 $filter ,但我不知道如何做到这一点。

最佳答案

$elemMatch这里不需要。这只能使用 $match 来实现如下所示。

const mongoose = require("mongoose");

Ticket.aggregate([{
"$lookup": {
"from": User.collection.name,
"localField": "creator",
"foreignField": "_id",
"as": "creator"
}
},
{
"$unwind": "$creator"
},
// Modified code
{
"$match": {
"creator.organizations": mongoose.Types.ObjectId("60a77d5b57d8c960829a0343")
}
},
{
"$set": {
"creator": "$creator._id"
}
},
])

关于mongodb - 使用带有 id 内部聚合 mongodb 的数组上的 where,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67635505/

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