首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Spring mongodb ArrayOperators filter by $in子句

Spring mongodb ArrayOperators filter by $in子句
EN

Stack Overflow用户
提问于 2019-05-21 22:56:07
回答 1查看 610关注 0票数 0

我必须将这个mongodb聚合代码转换为spring聚合代码

代码语言:javascript
复制
{ $addFields: {
    "versions" : { $filter: {
        input: "$versions",
        as: "version",
        cond: {$in: ["$$version.parentId", "$libraries._id"]}
    }}
}}

我当前的代码是

代码语言:javascript
复制
AddFieldsOperation.with("versions", 
    ArrayOperators.arrayOf("versions").filter().as("version").by(
        ArrayOperators.In.arrayOf("version.parentId").containsValue(
            ArrayOperators.arrayOf("libraries._id")
        )
    )
)

但是这会抛出这个错误:

$in需要数组作为第二个参数,found: objectId‘

我猜是因为它不接受这个论点

代码语言:javascript
复制
ArrayOperators.arrayOf("libraries._id")
EN

回答 1

Stack Overflow用户

发布于 2020-04-22 16:54:38

我有这样的疑问

代码语言:javascript
复制
{
   coupons: {
      $filter: {
         input: "$coupons",
         as: "coupon",
         cond: { 
             $in: [ "$$coupon._id", ["ABC", "DEF"] ]
         }
      }
   }
}

下面的解决方案对我很有效

代码语言:javascript
复制
filter("$coupons").as("coupon").by(ArrayOperators.In.arrayOf(couponIds).containsValue("$$coupon._id"))

注意: couponIds是带有值"ABC","DEF“的列表。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56241082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档