我正在尝试进行查询,以便我只返回当前'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"
},
所以我想知道我做错了什么或者其他任何方式我可以做这项工作,非常感谢!
答案 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 } } }
});