在mongoose中查询具有条件的文档

时间:2016-12-28 16:12:38

标签: mongodb mongoose mongodb-query

我有一个像这样的猫鼬模式:

pip install matplotlib==1.5.1 

现在我想查询所有在minCost和maxCost之间有totalCost的行程。有什么方法可以做到吗?我试过$ where但我无法将minCost,maxCost传递给函数。

2 个答案:

答案 0 :(得分:2)

您无法查询Mongoose虚拟属性,因为它们仅存在于文档的Mongoose模型表示中,而不存在于应执行查询的MongoDB本身中。

但是,您可以运行计算总费用的汇总查询,然后使用 $match 管道查询文档。以下示例显示了此方法:

api.domain.com/user/1

答案 1 :(得分:1)

我认为$在哪里是唯一的方法,你可以实现这一目标但是$在哪里是昂贵的。

我不确定mongoose中有哪些选项可以使用$ where但是它会像下面那样

var minCost=1000;
var maxCost = 10000;
query.$where(function () {
  var cost=0;
  for(var i in this.expenses){cost+=this.expenses[i].cost}
  if(cost>minCost && cost<maxCost){return true;}
})

以下是link

另一种方法是我们可以将javascript作为字符串传递给$ where子句

var minCost=1000;
var maxCost = 10000;
var func = 'var cost=0;for(var i in this.expenses{cost+=this.expenses[i].cost}if(cost>'+minCost+' && cost<'+maxCost+'){return true;}'
query.$where(func);