MongoDB聚合$ match与$ or

癫痫病

有没有一种方法可以使用对象数组作为搜索参数来搜索mongodb数据库?

可以说我有以下搜索首选项:

preferences = [{
    product: "PRODUCT_A",
    minqty: 5,
    maxqty: 50
  },
  {
    product: "PRODUCT_B",
    minqty: 100,
    maxqty: 500
  }
]

在我的数据库中,乔布斯具有以下结构:

{
  jobName: "job name",
  items: [{
      product: "PRODUCT_A"
      qty: 25
    },
    {
      product: "PRODUCT_F"
      qty: 300
    }

  ]
}

我想使用首选项查询数据库,并返回至少匹配条件之一的所有作业

尝试1:

我设法将所有偏好设置都用作过滤器,但它$match是累积性的,其编写方式类似于&&javascript。我的目标是要“匹配这个||”。

let pipeline = [];

preferences.map((item) => {
  let search = {
    product: item.product,
    quantity: { $gte: item.minqty, $lte: item.maxqty },
  };

  return pipeline.push({
    $match: {
      items: {
        $elemMatch: search,
      },
    },
  });
});

const jobs = await Job.aggregate(pipeline);

尝试2(成功):

let search = [];

preferences.map((item, index) => {
  let arguments = {
    product: item.product,
    quantity: { $gte: item.minqty, $lte: item.maxqty },
  };

  search.push(arguments);
});

let pipeline = [
  {
    $match: {
      items: {
        $elemMatch: {
          $or: search,
        },
      },
    },
  },
];

const jobs = await Job.aggregate(pipeline);
纳姆(HM Nayem)

我认为您可以通过减少preferences数组并使用$or运算符来创建搜索对象映射preferences数组时,它将返回一个将执行and操作的数组您需要一个像-

{
  $or: [{product1, quantity1}, {product2, quantity2}]
}

我想你明白我的意思。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MongoDB聚合$ lookup $ match

来自分类Dev

MongoDB-在ObjectId上聚合$ match

来自分类Dev

无法开始$ match和$ group MongoDB聚合

来自分类Dev

使用带有$ lookup和$ match的聚合的搜索查询mongodb

来自分类Dev

MongoDB聚合查询优化:$ match,$ lookup和double $ unwind

来自分类Dev

MongoDb聚合$ match错误:“参数必须是聚合管道运算符”

来自分类Dev

MongoDB:“ $ match聚合表达式中不允许使用$ where

来自分类Dev

如何在mongodb中的聚合中使用$ match作为可选参数

来自分类Dev

如何在MongoDB聚合中添加来自不同集合的多个$ match条件

来自分类Dev

MongoDB聚合:在$ match $或查询中使用当前文档的字段值

来自分类Dev

MongoDB-如何在聚合的$ match中比较不同集合的字段?

来自分类Dev

在MongoDB $ match聚合阶段是否可以按嵌套数组对象的字段过滤?

来自分类Dev

聚合。在$ match中使用$ let

来自分类Dev

与mongodb聚合

来自分类Dev

日期和时间过滤器在 find() 操作中工作正常,但 $match 与 mongodb 中的聚合存在问题

来自分类Dev

using $and with $match in mongodb

来自分类Dev

MongoDB $ lookup和$ match

来自分类Dev

PHP Mongo聚合中的多个$ match

来自分类Dev

猫鼬聚合$ match不匹配

来自分类Dev

MongoDB:是否有可能在聚合管道的$ match阶段将包含正则表达式的字段与字符串匹配?

来自分类Dev

在mongodb中使用$ and和$ match

来自分类Dev

MongoDB $ match和$ group问题

来自分类Dev

Mongodb-$ match中的$ cond

来自分类Dev

MongoDB使用$ match和$ cond

来自分类Dev

mongodb $ match中的多个条件

来自分类Dev

python mongodb $ match和$ group

来自分类Dev

mongodb $match 和 $nin 与 _id

来自分类Dev

如何使用MongoDB聚合

来自分类Dev

Mongodb聚合管道很慢

Related 相关文章

热门标签

归档