nor*_*tos 3 javascript filtering google-cloud-firestore
我想过滤一个集合,包括条件中集合的字段。
- 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)
谢谢
无法在表达式的值中指定字段引用。
我能想到的最好方法是将 的值存储field2 - field1在单独的字段中,以便您可以将其与常量进行比较。例如,如果您将 field2 和 field 1 的增量存储在 中delta_field2_field2,您将得到以下查询:
db.collection('myCollection').where('delta_field2_field2','<', 0)
Run Code Online (Sandbox Code Playgroud)
然后,如果您将字段 1 和 2 的总和存储在中,sum_field1_field2您将得到:
db.collection('myCollection').where('sum_field1_field2','<',1000)
Run Code Online (Sandbox Code Playgroud)
您会发现这是 NoSQL 数据库的一个常见主题:如果您想要的运算符不是内置的,您通常可以将数据添加到模型中以适应用例。
| 归档时间: |
|
| 查看次数: |
699 次 |
| 最近记录: |