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