【问题标题】:Meteor/Mongo DB $gte operator not working on find();Meteor/Mongo DB $gte 运算符不在 find() 上工作;
【发布时间】:2020-01-17 08:04:03
【问题描述】:

我正在尝试进行查询,以便仅返回当前“类别”中的“productos”,它们还需要“stock.cantidad”字段大于或等于 1 和“stock. idCedis' 等于一个特定的值,这就是我尝试这样做的方式:

return Productos.find(
        {
          idCategoria: Router.current().params._id,
          "stock.cantidad":{$gte: 1},
          "stock.idCedis":idCedis
        });

我检查了“stock.idCedis”:idCedis 工作正常,显示具有特定“idCedis”的“productos”,但我遇到的问题是“stock.cantidad”:{$gte: 1},部分原因是我不知道为什么 Meteor 或 Mongo DB 会忽略它。

我目前使用的“productos”库存部分的架构是这样的:

stock: {
    type: [Object]
  },
    "stock.$.cantidad": {
      type: Number,
      label: "Cantidad de Stock",
      min: 0
    },
    "stock.$.idCedis": {
      type: String,
      label: "Centro de Distribución"
    },

所以我想知道我是否做错了什么或任何其他方法可以使这项工作。

【问题讨论】:

    标签: mongodb meteor


    【解决方案1】:

    由于 stock.$.cantitad 是一个数组,请尝试 $elemMatch

    return Productos.find(
            {
              idCategoria: Router.current().params._id,
              "stock.cantidad":{$elemMatch {$gte: 1}},
              "stock.idCedis":idCedis
            });
    

    mongo docs 表示当只有一个查询条件时您不需要这样做,但考虑到 Meteor 与 mongo 的交互方式,我会尝试一下。

    【讨论】:

      【解决方案2】:

      Muchas gracias Michael Floyd,我需要的是 $elemMatch 查询运算符,但由于某种原因,您的代码对我不起作用,起作用的是:

      Productos.find(
              {
                idCategoria: Router.current().params._id,
                stock: { $elemMatch: { idCedis: idCedis, cantidad: { $gte: 0 } } }
              });
      

      【讨论】:

        猜你喜欢
        • 2020-11-26
        • 2016-04-19
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 2022-12-02
        • 1970-01-01
        相关资源
        最近更新 更多