【问题标题】:Join two different documents in couchdb using futon map program?使用蒲团地图程序加入couchdb中的两个不同文档?
【发布时间】:2014-04-29 07:56:05
【问题描述】:

我有两个文件,如下所示:

{
   "_id": "00315fd5428d43a19ce86ae7a273085f",
   "_rev": "3-031e613837bf7e9c75f8bc9f5230d921",
   "device_sno": "WEC343",
   "moving_status": true,
   "overall_status": true,
   "temperature": "-1° C",
   "trip_id":3
}

{
  "_id": "1a",
  "_rev": "4-e876b14dcb4cfd18aba8eb36b2be33bd",
  "customer_name": "praneeth",
  "customer_id": 2,
  "tripp_id": 3
}

现在基于第一个文档中的行程 ID,我想从 doc2 中获取客户名称。 谁能帮我解决这个问题,这对我有很大帮助............

【问题讨论】:

    标签: javascript mapreduce couchdb


    【解决方案1】:

    您可以使用couchdb linked documents 执行此操作。

    如果您发出具有 {'_id': XXX} 的对象值,则 include_docs=true 将获取 id 为 XXX 的文档,而不是经过处理以发出键/值对的文档。

    这意味着如果一个文档包含其他文档的 id,它可能会导致这些文档也被获取到视图中,如果需要,与相同的键相邻。

    如果您稍微更改文档的架构并将第二个文档的 _id 字段包含在第一个文档中,就像这样

    {....,{"trip_id":"id of the document to fetch"}}

    然后你可以定义一个类似的视图

    function(doc){
     emit(doc.key,{"_id":doc.trip_id});//doc.key is the key on which you want your view to be sorted.
    }
    

    现在可以这样查询了

    http://localhost:5984/db_name/_design/ddoc_name/_view/view_name?key="some-value"&include_docs=true

    这将获取链接的文档。这里要注意的重要一点是 emit 中的第二个参数必须指向您要获取的文档。在您的情况下,trip_id 必须指向第二个文档的 _id

    【讨论】:

    • 对不起,我在 emit 函数中犯了一个错误。你能再试一次吗?它现在应该可以工作了。我在本地沙发数据库上对其进行了测试。
    • 还有一个疑问...?
    • 不,您不能跨数据库加入。
    猜你喜欢
    • 2012-05-13
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 2015-03-30
    相关资源
    最近更新 更多