CouchDB简单找到

时间:2011-05-18 11:10:26

标签: couchdb

我有一些couchDB数据库。 我希望,如在mongodb中,找到一个项目。 像db.find({user : "John"})之类的东西 这是最简单的方法吗?

5 个答案:

答案 0 :(得分:4)

如果您预先定义了查询,则可以使用views查询数据库。

还可以使用temporary views进行即席搜索,但从不建议将它们用于生产用途,因为索引未保存。

如果您需要更多全文搜索,请查看couchdb-lucene

答案 1 :(得分:1)

您选择的编程语言是什么? CouchDB的API基于HTTP。 基本上,您可以设置一个视图,该视图使用用户名作为密钥,并通过HTTP请求或在特定语言的“驱动程序”的帮助下进行查询。

视图定义为map / reduce函数。例如,官方wiki可以找到简单的介绍。 另外,看看CouchDB guide是一个很好的起点。

答案 2 :(得分:1)

我更喜欢使用elasticsearch。 它有一个couchdb _river用于集成。它将侦听_changedb的变化,然后获取并索引文档。

这样你就可以获得弹性搜索的强大功能(由lucene提供支持),具有RESTful接口和集群功能。

您可以很好地分离“搜索”与核心文档。 这意味着您可以在不同的文档存储中进行索引和搜索。

不可否认,你并没有在一个软件包中得到一个漂亮的小软件,但为了我的使用案例的灵活性,它赢了。

答案 3 :(得分:0)

我有一个新项目要执行此操作:http://github.com/iriscouch/query_couchdb

(希望我今天可以添加介绍和文档。)

我们的想法是复制Google App Engine Python API。

new Query("User")
    .filter("name =", "John")
    .order('-age')
    .get(function(er, view) {
        if(er)
            throw(er);

        console.log("Got " + view.rows.length + " rows!");
        for(var a = 0; a < view.rows.length; a++) {
            var row = view.rows[a];
            console.log("Row " + a + " = " + JSON.stringify(row));
        }
});

不幸的是它缺少单元测试和示例,但我已经在生产中使用它了。

答案 4 :(得分:0)

有一项倡议是使用query syntax offered by mongo db实现类似mongo的查找。 Cloudant宣布了这项计划,他们开始通过基于MongoDB的Apache CouchDB查询语言界面mango进行贡献。

Cloudant项目应允许此类查询find({user : "John"})find({user:{$in : ["Doe", "Smith"]}})find({"age": {"$gt": 21}}) age > 21

还正在为囊db开发类似的替代pouchdb-find