Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在Cloudant noSQL数据库中搜索多个参数_Node.js_Database_Ibm Cloud_Cloudant - Fatal编程技术网

Node.js 在Cloudant noSQL数据库中搜索多个参数

Node.js 在Cloudant noSQL数据库中搜索多个参数,node.js,database,ibm-cloud,cloudant,Node.js,Database,Ibm Cloud,Cloudant,我使用Bluemix上的Cloudant数据库将产品存储在Node.js服务器中。这些产品将按类别进行搜索。要查找只有一个类别的产品,这不会是一个问题,因为搜索是通过比较作为搜索参数发送的字符串与保存在数据库中的类别字符串来进行的。当一个产品有两个或多个类别时,就会出现问题。在对字符串进行比较时,它永远不会重合 这些产品可以根据需要有任意多个类别 有什么想法吗?如果我正确理解了您的问题,您可能希望将类别存储为字符串数组,并为数组中的每个元素编制索引。然后,您可以根据单个或多个类别搜索产品 例如,

我使用Bluemix上的Cloudant数据库将产品存储在Node.js服务器中。这些产品将按类别进行搜索。要查找只有一个类别的产品,这不会是一个问题,因为搜索是通过比较作为搜索参数发送的字符串与保存在数据库中的类别字符串来进行的。当一个产品有两个或多个类别时,就会出现问题。在对字符串进行比较时,它永远不会重合

这些产品可以根据需要有任意多个类别


有什么想法吗?

如果我正确理解了您的问题,您可能希望将
类别
存储为字符串数组,并为数组中的每个元素编制索引。然后,您可以根据单个或多个类别搜索产品

例如,给定以下文档:

文件1

{
  "name": "product1",
  "category: ["abc"]
}
文件2

{
  "name": "product2",
  "category: ["abc", "def"]
}
您可以设置类似以下内容的搜索索引:

function (doc) {
  if (doc.category) {
    for (var i in doc.category) {
      index("category", doc.category[i], {"store": true, "facet": true})
    }
  }
}
然后,您可以运行如下查询:

../{dbname}/\u design/{designdocname}/\u search/{searchindexname}?q=category:abc

这将返回product1和product2 或:

../{dbname}/\u design/{designdocname}/\u search/{searchindexname}?q=category:abc+和+category:def

这将只返回product2


其他信息:

您应该在Cloudant数据库中的“category”参数中以数组格式存储一个或多个类别

{
  "_id": "producto1",
  "category: ["TV", "cameras", "computers"]
}
然后您应该创建一个搜索索引

function (doc) {
  if (doc.category) {
    for (var i in doc.category) {
      index("category", doc.category[i], {"store": true, "facet": true})
    }
  }
}
现在,您可以从Cloudant查询中查询文档

{
  "selector": {
    "_id": {
      "$gt": 0
    },
    "category": {
      "$all": [
        "TV",
        "cameras"
      ]
    }
  },
  "fields": [
    "_id",
    "_rev"
  ],
  "sort": [
    {
      "_id": "asc"
    }
  ]
}
或者你可以使用

https://{url_database}/{name_database}/_design/{name_design}/_search/{name_search}?q=category:TV