Meteor / Mongo DB $ gte运算符不用于find();

时间:2015-07-17 01:52:23

标签: mongodb meteor

我正在尝试进行查询,以便我只返回当前'categoria'上的'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"
    },

所以我想知道我做错了什么或者其他任何方式我可以做这项工作,非常感谢!

2 个答案:

答案 0 :(得分:1)

由于 stock。$。cantitad 是一个数组尝试 $ elemMatch

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

http://web.stanford.edu/class/archive/cs/cs106b/cs106b.1136/表示当只有一个查询条件时你不应该这样做,但考虑到Meteor如何与mongo交互,我试试。< / p>

Con much gusto。

答案 1 :(得分:0)

Muchas gracias迈克尔弗洛伊德,我需要的是$ elemMatch查询运算符,但由于某种原因,你的代码不能形成我,有用的是:

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