Couchdb вид, находит с условием - PullRequest
0 голосов
/ 01 сентября 2018

Я новичок в Couchdb, я не знаю их дизайн. Я знаю, что мы должны использовать emit (), чтобы создавать ключи для поиска. Как сделать запрос на просмотр с этими условиями (как SQL)?

Where A = 'b' && Date >= 2010 && Date <= 2020

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Если вы используете CouchDB 2.X, вы можете использовать Mango в качестве альтернативы. Мне легче пользоваться и понимать.

{
    "A":"b",
    "$and":[
        {
            "Date": {
                "$gte":2010
            }
        },
        {
            "Date":{
                "$lte":2020
            }
        }
    ]
}

Возможно, вы хотите создать индекс для этого запроса, который будет быстрее, чем другой альтернативный ответ.

0 голосов
/ 03 сентября 2018

Вам нужно выдать многовариантный ключ, что-то вроде

# map
function(doc) {
    if (doc.A && doc.Date) {
        emit([doc.A, doc.Date], 1)
    }
} 

# reduce
_count

Вы можете запросить его как

curl 'https://host.com/DB/_design/DDOC/_view/VIEW?reduce=false&include_docs=true&inclusive_end=true&startkey=\["a",2010\]&endkey=\["a",2020\]'

Вы можете попробовать сами в базе данных, которую я создал, которая открыта для чтения.

curl 'https://skruger.cloudant.com/stackex/_design/examples/_view/by-a-date?reduce=false&include_docs=true&inclusive_end=true&startkey=\["a",2010\]&endkey=\["a",2020\]'
...