在CouchDB中进行部分搜索/查找

时间:2018-03-09 09:45:45

标签: node.js express couchdb

这可能实际上是一个愚蠢的问题,但我不明白查询过程在CouchDB中是如何工作的。我来自MongoDB背景,并不能真正应用我所知道的。

假设我有一个表格食谱数据库:

{
  "_id": "335ddc061465ec83b50b4f8d4100058d",
  "_rev": "2-b43fde3b553c08e8dd6ce19e397ec244",
  "title": "Recipe title",
  "ingredients": [
    "ingredient 1",
    "ingredient 2"
  ],
  "procedure": "What you need to do to cook the recipe",
  "pictures": [
    "picture_url_1",
    "picture_url_2"
  ],
  "videos": [
    "video_url_1",
    "video_url_2"
  ],
  "date": "some_date"
}

我想编写一个查询,例如给定一个或多个术语,它找到搜索可能结果的列表(即,我可以查找类似“具有类似标题成分1的食谱”的内容)。理想情况下,作为第一步,我将拆分查询并查找每个文档中的过程,标题和成分中的术语。我找到this并查看条件运算符,但我似乎没有找到与mongo中.find函数类似的函数,其中包含{ $text: { $search: "similar title ingredient 1" } }等参数。我想学习CouchDB在文档列表上执行这种逻辑OR查询的方法。

我正在使用Node.js + Express并使用node-couch与数据库进行交互。至于我为什么选择了我已经知道的Mongo的CouchDB,我只是想学习如何使用Couch :)。谢谢大家!

1 个答案:

答案 0 :(得分:1)

有两种方法可能对您有用。

  1. 看看couchdb-lucene。这允许您对来自CouchDB的数据使用lucene。
  2. 写一个巨人view,为所有内容发出令牌并对其进行查询。
  3. 第一个选项可能是最好的,如果安装它是一个选项,你也不需要这个在PouchDB中工作。第二个是更基本的,但在两种情况下都可以工作,并且不需要任何第三方工具。