Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb DBRefs与Map/Reduce与手动参考_Mongodb_Mapreduce_Dbref - Fatal编程技术网

Mongodb DBRefs与Map/Reduce与手动参考

Mongodb DBRefs与Map/Reduce与手动参考,mongodb,mapreduce,dbref,Mongodb,Mapreduce,Dbref,我遇到了三种“加入”收藏的不同方式: 手动保留对希望加入目标集合的集合的“外键esk”引用 使用 编写一系列函数来维护关系 有人能解释一下每种方法的好处以及我应该在什么时候使用它们吗 我的第一印象是Map/Reduce适用于大型、常用的集合,其他两个主要用于小型/快速查询。很抱歉响应太晚-下面是一个用mongoose编写的嵌入式文档的简单示例: var postSchema = new Schema({ author : {type : String}, title : {type :

我遇到了三种“加入”收藏的不同方式:

  • 手动保留对希望加入目标集合的集合的“外键esk”引用
  • 使用
  • 编写一系列函数来维护关系
  • 有人能解释一下每种方法的好处以及我应该在什么时候使用它们吗


    我的第一印象是Map/Reduce适用于大型、常用的集合,其他两个主要用于小型/快速查询。

    很抱歉响应太晚-下面是一个用mongoose编写的嵌入式文档的简单示例:

    var postSchema = new Schema({
      author : {type : String}, 
      title : {type : String, require : true},
      content : {type : String, require : true},
      comment : {
        owner : {type : String},
        subject : {type: String, require},
        content : {type String, require}
      }
    });  
    
    这里的文档是postSchema(当然是schema,但我想你知道我的意思)。
    注释是嵌入的文档,您可以看到它是在post中定义的对象。

    这样做的好处是,您每次调用post时都会收到评论,而无需额外查询。但是,如果您有许多评论,则会使post文档非常大

    我想说的是,您永远不应该通过MR来维护连接,而DBRef只是第一个版本的另一个版本,除了DBRef还拥有一个集合名之外,没有什么区别。您知道一种优化引用的方法吗,这样您就不需要从客户端执行额外的查询来获取引用的记录了?在返回数据集之前,有没有办法在服务器上执行此操作?没有,mongodb没有服务器端引用的解决方案帮助解决像mongodb这样的面向文档的数据库系统的挑战。:)如果构建完整的数据“视图”需要大量文档请求,那么MongoDB并不适合某些类型的系统。若很多数据是动态的,那个么中间层的缓存可能不像在某些系统中那个样适合(取决于您的场景)。请看:和以获取更多的评论。谢谢。我最终得到了注释的第二个模式,这样我就可以通过所有者或Post引用它们(借用您示例中的命名结构)。它似乎最适合我的特定用例,尽管我可以看到,对于MongoDB和基于文档的数据库,您的思维方向必须有所不同。我同意,从RDBMS切换到基于文档的DBs需要一些时间。