如何使用 JavaScript 在 ReThinkDB 中的 ReQL 中的数组上应用过滤器

Posted

技术标签:

【中文标题】如何使用 JavaScript 在 ReThinkDB 中的 ReQL 中的数组上应用过滤器【英文标题】:How to apply filter on array in ReQL in ReThinkDB using JavaScript 【发布时间】:2015-05-28 11:37:36 【问题描述】:

在下面的 JSON 中,我想选择销售额 > 12500 的记录。如何在 ReThinkDB 和 ReQL 中做到这一点?

JSON 是:


 "address":   
    "address_line1":  "Address Line 1" ,
    "address_line2":  "Address Line 2" ,
    "city":  "Kochin" ,
    "country":  "India" ,
    "state":  "Kerala"
   ,
  "id":  "bbe6a9c4-ad9d-4a69-9743-d5aff115b280" ,
  "name":  "Dealer 1" ,
  "products": [
         
           "product_name":  "Stabilizer" ,
           "sales": 12000
          ,
         
           "product_name":  "Induction Cooker" ,
           "sales": 14000
         
    ]
   , 
    "address": 
          "address_line1":  "Address Line 1" ,
          "address_line2":  "Address Line 2" ,
          "city":  "Kochin" ,
          "country":  "India" ,
          "state":  "Kerala"
      ,
     "id":  "f033a4c2-959c-4e2f-a07d-d1a688100ed7" ,
     "name":  "Dealer 2" ,
     "products": [
           
            "product_name":  "Stabilizer" ,
            "sales": 13000
            ,
           
            "product_name":  "Induction Cooker" ,
            "sales": 11000
           
      ]

【问题讨论】:

你想要什么作为这个输出? product_name: "Stabilizer", sales: 13000 之类的产品列表?还是包含至少一种产品的销售量足够高的所有文档的完整文档? 我想要任何产品销售额超过 12,500 的所有文档的完整文档。这可能吗? 好吧,这是有道理的。我在下面添加了我的答案。希望有效。 【参考方案1】:

要获取任何产品的至少一个销售额超过 12,500 的所有文档,您可以在 ReQL 中使用以下过滤器:

r.table('t')
 .filter(r.row('products').contains(function(product) 
   return product('sales').gt(12500);
 ))

这利用了您可以将函数传递给contains 的事实。如果funarray 中的至少一个元素返回true,则array.contains(fun) 返回true。 您可以在http://rethinkdb.com/api/javascript/contains/找到更多示例

【讨论】:

以上是关于如何使用 JavaScript 在 ReThinkDB 中的 ReQL 中的数组上应用过滤器的主要内容,如果未能解决你的问题,请参考以下文章

陇原杯 eaaasyphp

python3+打包报告发送邮件

极客大挑战 Hardsql

如何在 Xcode 4.3 上使用 JavaScript?

如何在 JavaScript 中使用可枚举

在 Rails 中如何在使用 javascript_include_tag 之前检查 javascript 文件是不是存在