【问题标题】:Filter with array key in CouchDB在 CouchDB 中使用数组键过滤
【发布时间】:2013-04-02 20:30:29
【问题描述】:

我想通过一个值过滤文档,该值包含返回我制作的设计视图的键字段中的数组。

// _design/products/_view/all
function(doc) {
    if (doc.type && doc.type == 'producto'){
        emit([doc.created, doc.user], doc);
    }
}

结果:

{"total_rows":3,"offset":0,"rows":[ { “ID”: “64243f77b5135758d1f0d55c250001f5”, “关键”:[1364931254000 “samuelb1311”], “值”:{ “_ ID”: “64243f77b5135758d1f0d55c250001f5”, “_ REV”: “3-50f67780d6388f3aad469dbdd1081b9e”, “农布雷”:“柠檬","precio":250,"user":"samuelb1311","created":1364931254000,"type":"producto"}}, {“ID”:“64243F77B5135758D1F0D55C25000580”,“键”:[1364931381000,“Samuel123”],“值”:{“_ ID”:“64243F77B5135758D1F0D55C2500058E”,“_ REV”:“3-C1F893AF011EE5A3687B0A9EEEDC3467”,“Nombre”:“Nombre”:“Nombre”:“诺布雷” ","precio":360,"user":"samuel123","created":1364931381000,"type":"producto"}}, { “ID”: “64243f77b5135758d1f0d55c25000e7a”, “关键”:[1364931447000 “samuelb1311”], “值”:{ “_ ID”: “64243f77b5135758d1f0d55c25000e7a”, “_ REV”: “3-2b05730dfcf3407b7335ec029e5cfdc5”, “农布雷”:“Naranja的","precio":25,"user":"samuelb1311","created":1364931447000,"type":"producto"}} ]}

我需要键中的日期来按从第一个插入到最后一个插入的升序和降序对信息进行排序,反之亦然。
那么,如何按用户过滤信息,例如用户“samuelb1311”或用户“samuel123”?
我尝试了 startkey 和 endkey 之类的东西,但这对我不起作用,那是返回空响应。
谢谢你能给我带来一些信息!

【问题讨论】:

    标签: javascript filter nosql key couchdb


    【解决方案1】:

    您需要颠倒顺序或时间戳和用户,才能仅获取特定用户的条目。那是因为当你想使用 startkey/endkey 时,你只能从 key 排序的条目中得到一个连续的范围。然后像这样使用 startkey 和 endkey:

    startkey=["foo"]&endkey=["foo","a"]
    

    看看http://wiki.apache.org/couchdb/View_collation?action=show&redirect=ViewCollation

    【讨论】:

    • 我尝试这样的事情: localhost:5984/crud/_design/productos/_view/all?descending=true&startkey=[{}]&endkey=[0,"samuelb1311"] 但这会返回所有所有用户的数据,所以,不要工作。
    • 我认为您误解了@thejh 所说的内容。你需要将你的 emit 更改为 emit([doc.user, doc.created], ...),你的开始键是 ["samuelb1311"],你的结束键是 ["samuelb1311", {}]
    • 但如果我这样做,产品的顺序将按用户名的字母顺序排列
    • @SamuelBR:我以为你只想选择一个用户?
    • @thejh no hehe,你的回答让我明白了,现在我的数据库中有两个视图,一切正常。一个视图按键返回订购日期,第二个视图返回用户和日期的数组键,用于订购和过滤,如您所说。非常感谢!
    猜你喜欢
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多