我想过滤一个集合,包括条件中集合的字段。
- myCollection
|- name (string)
|- field1 (int)
|- field2 (int)
Run Code Online (Sandbox Code Playgroud)
我想获取 field1 > field2 的所有名称。我认为它可以这样工作:
db.collection('myCollection').where('field1','>','field2')
.get().then(function(snapshot){
//doing something
});
Run Code Online (Sandbox Code Playgroud)
但是,它被理解为 field1 > 'field2',而不是 field1 > field2。
我想更进一步,做类似 field1+field2<1000 的事情,但是以下两个查询都没有结果
db.collection('myCollection').where('field1'+'field2','<',1000)
.get().then(function(snapshot){
//doing something
});
db.collection('myCollection').where('field1+field2','<',1000)
.get().then(function(snapshot){
//doing something
});
Run Code Online (Sandbox Code Playgroud)
谢谢
我有一个表(我们可以称之为"A")与一些字段(模型:字符串,年龄:整数,代码1:整数,代码2:整数,代码3:整数)和另一个表(它可以是"代码")与分类代码(代码:整数,代码类型:字符串,描述:字符串).
该字段代码类型用于分组代码.例如,200到300之间的代码是棕色的.每个项目最多可以有3个代码.
现在,我只想获得简单,简单的查询:
SELECT model,age FROM dataset.A
WHERE code1 IN (SELECT code FROM dataset.codes WHERE codetype='brown')
Run Code Online (Sandbox Code Playgroud)
它有效,除了事实,还有另外两个.所以,如果我这样做:
SELECT model,age FROM dataset.A
WHERE code1 IN (SELECT code FROM dataset.codes WHERE codetype='brown')
OR code2 IN (SELECT code FROM dataset.codes WHERE codetype='brown')
OR code3 IN (SELECT code FROM dataset.codes WHERE codetype='brown')
Run Code Online (Sandbox Code Playgroud)
它不起作用,我收到此错误消息:
Error: (xx:yy): Semijoin expression (i.e. "x IN (SELECT ...)") must be a part of logical AND.
Run Code Online (Sandbox Code Playgroud)
我相信谷歌应该有办法做到这一点.
顺便说一句,我正在开发的项目不是"A"和"代码".我真的需要一个解决方案.谢谢你的帮助.