Couchbase-在所有文档类型Foo中创建新属性,其值取自文档类型栏?

Couchbase-在所有文档类型Foo中创建新属性,其值取自文档类型栏?,couchbase,bulkupdate,database,nosql,Couchbase,Bulkupdate,Database,Nosql,我们需要在所有文档类型“Foo”中创建一个新属性“startDate”,该属性的值取自文档类型“Bar” 所有“Foo”文档都包含一个指向Bar的“外键”(一个称为“BarId”的字段) 除了以编程方式检索和更新所有实体之外,最简单的方法是什么? (Couchbase版本是3.0)我猜您指的是类似于SQL UPDATE的声明性解决方案。CB3没有这样的功能,但由于CB4.1,N1QL有一个UPDATE语句。检查。正如TAM所说,您可能可以使用Couchbase 4.1中的N1QL中的UPDATE

我们需要在所有文档类型“Foo”中创建一个新属性“startDate”,该属性的值取自文档类型“Bar”

所有“Foo”文档都包含一个指向Bar的“外键”(一个称为“BarId”的字段)

除了以编程方式检索和更新所有实体之外,最简单的方法是什么?
(Couchbase版本是3.0)

我猜您指的是类似于SQL UPDATE的声明性解决方案。CB3没有这样的功能,但由于CB4.1,N1QL有一个UPDATE语句。检查。

正如TAM所说,您可能可以使用Couchbase 4.1中的
N1QL
中的UPDATE语句来完成此操作。。。但你用的是3.0

在Couchbase 3.x中,您最好编写:

  • 一个
    视图
    ,允许您获取类型为
    Foo
  • 使用SDK执行以下操作的脚本:
  • 质疑这个观点
  • 检索每个
    Foo
    doc
  • Foo
    doc的内容中获取
    Bar
    id
  • 获取
    文档
  • 相应地更新
    Foo
    内容,并将
    Foor
    文档保存(更新)到数据库中

  • UPDATE
    对我来说不太合适,因为我需要在两种文档类型之间执行某种“连接”。但看起来Couchbase的
    MERGE
    语句正是我所需要的


    我们将升级到4.1,看看它是如何运行的。

    顺便说一句,由于CB的无模式理念,没有像phpmyadmin或pgadmin这样的所有舒适的维护工具,您很快就会需要这样的算法。
    Foo: {
     id: 100,
     barId: 123, 
     startDate: "12/12/79", //new field to be added 
    } ,    
    
    Bar: { 
     id: 123,
     startDate: "12/12/79",
    }