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

问题描述 投票:2回答:3

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

{
    "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中获取某个范围的文档?

sails.js waterline
3个回答
2
投票

我有同样的问题...。我希望有这样的解决方案...但是我最终使用了where。

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


2
投票

我有相同的问题,我想找到解决方法。

在查询中的工作类似于mysql在查询中的工作。数组中的每个元素都被视为“或”。

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

Check this! Waterline Query


0
投票

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

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

await Record.find({
  where: {
    and: [
      {year: {'>': 2005}},
      {year: {'<': 2008}}
    ]
  },
  limit: 3
})
© www.soinside.com 2019 - 2024. All rights reserved.