首页 > 解决方案 > how to convert cloudant query to nano search

问题描述

I have this query in cloudant database, but backend use var db = nano.db.use(process.env.DB_NAME || ''); which doesn't support db.find but support db.search. how could I convert this query to a search parameter?

var queryPifLog = {
        "selector": {
            "type": "piflog",
            "supplier_name": "1234",
            "region": {
                "$in": [
                    "ANZ",
                    "GCG"
                ]
            },
            "assign_datetime":{
                "$gt":assignedDate
            },
            "closure_datetime":{
                "$lt": closedData
            },

            "pif_owner": {
                "$in": [
                    "haha@163.com"
                ]
            }
        },
        "fields": [
            "operation",
            "operator",
            "type",
            "region",
            "country",
            "supplier_name",
            "operation_time",
            "pif_owner"
        ]
    };

标签: searchcloudantnano

解决方案


nano 库支持db.find,所以可以使用它。请参阅此处的文档:https ://www.npmjs.com/package/nano#dbfindselector-callback

如果您要使用 Cloudant Search,则必须使用其基于 Lucene 的查询语言。与上述查询等效的 Cloudant Search 类似于

q=type:piflog AND supplier_name:1234 AND (region:ANZ OR region:GCG) AND assign_datetime:(2018-01-01 TO *) AND closedData:(* TO 2018-10-22) AND pif_owner:haha@163.com

假设您已经适当地索引了这些字段。


推荐阅读