相关疑难解决方法(0)

Mongodb:我可以比较一个字段中的值是否包含在另一个字段中

假设我有一个名为 a 的集合collection_a,其中包含对名为 的集合 b 的查找collection_b。如果集合包含一个名为 的字段primary_color并且查找包含一个名为 的字段available_colors。我如何比较primary_coloravailable_colors查看列表中primary_color是否包含当前值available_colors

我尝试了以下但它在聚合匹配中不起作用,

{'primary_color': {'$in': '$collection_b.available_colors'}}.
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js

10
推荐指数
1
解决办法
159
查看次数

$ in需要一个数组作为第二个参数,发现:缺失

任何人都可以告诉我,我做错了什么?

db文件结构:

{
    "_id" : "module_settings",
    "moduleChildren" : [
        {
            "_id" : "module_settings_general",
            "name" : "General",
        },
        {
            "_id" : "module_settings_users",
            "name" : "Users",
        },
        {
            "_id" : "module_settings_emails",
            "name" : "Emails",
        }
    ],
    “permissions” : [
        "module_settings_general",
        "module_settings_emails"
    ]
}
Run Code Online (Sandbox Code Playgroud)

管道阶段:

{ $project: {
    filteredChildren: {
        $filter: {
           input: "$moduleChildren",
           as: "moduleChild",
           cond: { $in : ["$$moduleChild._id", "$permissions"] }
        }
    },
}}
Run Code Online (Sandbox Code Playgroud)

我需要过滤"moduleChildren"数组以仅显示哪些ID在"权限"数组中.我试过"$$ ROOT.permissions"和"$$ CURRENT.permissions",但没有一个能正常工作.我总是得到一个错误,$ in缺少数组作为参数.当我像这样硬编码数组时它起作用:cond: { $in : ["$$moduleChild._id", [“module_settings_general", "module_settings_emails”]] }所以看起来问题在于传递数组.谢谢你的任何建议!

arrays mongodb mongodb-query aggregation-framework

4
推荐指数
1
解决办法
1589
查看次数