Javascript 公式中包含字段的过滤器

Javascript 公式中包含字段的过滤器,javascript,filtering,google-cloud-firestore,Javascript,Filtering,Google Cloud Firestore,我想筛选条件中包含集合字段的集合 - myCollection |- name (string) |- field1 (int) |- field2 (int) 我想得到field1>field2的所有名称。我认为它可以这样工作: db.collection('myCollection').where('field1','>','field2') .get().then(function(snapshot){ //doing something }); 然而,它被理解为

我想筛选条件中包含集合字段的集合

- myCollection
|- name (string)
|- field1 (int)
|- field2 (int)
我想得到field1>field2的所有名称。我认为它可以这样工作:

db.collection('myCollection').where('field1','>','field2')
  .get().then(function(snapshot){
    //doing something
  });
然而,它被理解为field1>“field2”,而不是field1>field2


我想更进一步,做一些类似于field1+field2的事情,无法在表达式的值中指定字段引用

我能想到的最好的方法是将
field2-field1
的值存储在一个单独的字段中,以便您可以将其与常量进行比较。例如,如果将字段2和字段1的增量存储在
delta\u field2\u field2
中,则会得到以下查询:

db.collection('myCollection').where('delta_field2_field2','<', 0)

您将看到这是NoSQL数据库中的一个常见主题:如果您想要的操作员不是内置的,您通常可以将数据添加到您的模型中以考虑用例。

对于RTD,我喜欢将其视为一种关键生成策略,称之为:合成。在本例中,是一种文档属性生成策略。当筛选只对字段起作用时,该策略有效,但当筛选基于参数和字段的组合时,它不起作用。我知道NoSQL缺少它,但我希望谷歌考虑在这方面下功夫。
db.collection('myCollection').where('delta_field2_field2','<', 0)
db.collection('myCollection').where('sum_field1_field2','<',1000)