Sails.js WaterlineORM如何在查询中使用$和/ $或运算符

时间:2014-11-21 11:35:34

标签: sails.js waterline

我有一个存储在DB中的数据。以下是来自DB的一个文档的示例:

{
    "year": 2012,
    "indicator": 0
}

其他文件包含其他年份 - 2013年,2014年等及随机“指标”。现在我想选择2012年至2014年范围内有数据的所有文档和一些指标。我正在使用蓝图sails.js api来传递搜索查询。

我希望有一种方法可以传递两个查询,并使Waterline选择与一个(或两个)查询匹配的文档。

所以这就是我所尝试的(现在只是几年):

1

 {
        "year": {">=": 2012}
        "year": {"<=": 2014}
 }

在这里,我只获得了2012年的文档。

2

 {
        "year": {">=": 2012, "<=": 2014}
 }

与1相同。

3

 "or": [{
    "year": {">=": 2012}
  }, {
    "year": {"<=": 2014}
  }]

与1相同。

4

 "and": [{
    "year": {">=": 2012}
  }, {
    "year": {"<=": 2014}
  }]

不会退回任何文件。

问题是:如何在waterlineORM的某个范围内获取文件?

3 个答案:

答案 0 :(得分:1)

我有同样的问题....我希望有这样的解决方案......但我最终会在哪里使用。

stuff.find({year:{"<":2014}}).where({year:{">":2012}})

答案 1 :(得分:1)

我有同样的问题,我想找到解决方案。

在查询中,查询的工作方式类似于mysql&#39;。 数组中的每个元素都被视为&#39;或&#39;。

Model.find({
  name : ['Walter', 'Skyler']
});

Check this! Waterline Query

答案 2 :(得分:0)

随着时间的流逝,这个问题没有得到回答,我会自己回答。

此解决方案适用于最新版本的Sails(1.2.3)和MySQL DB:

await Record.find({
  where: {
    and: [
      {year: {'>': 2005}},
      {year: {'<': 2008}}
    ]
  },
  limit: 3
})