javascript - 在 Node Js 中连接两个不同的集合形成 mongoDB

标签 javascript node.js mongodb mongoose mongodb-query

我是 mongoDB 的新手,想知道以下是否可行。

我在同一个 mongo 数据库表中有两个不同的集合 - 称为jobsnodes,它们看起来像:

function testing() {
    nodes.find(function(err, data) {
        if (err) {
            console.log(err)
        } else {
            console.log('NODES RETURNED: ', data)

            jobs.find(function(err, post) {
                if (err) {
                    console.log(err)
                } else {
                    console.log('JOBS RETURNED: ', post)
                }
            });
        }
    });
}

返回以下内容:

JOBS RETURNED:  [ { _id: '5899999354d59',
    job_url: 'http://222.22.22.22:2222/jobs',
    progress: 0,
    queue: 0 },
  { _id: '5899b7d054da96',
    job_url: 'http://111.11.1.111:1111/jobs',
    progress: 0,
    queue: 0 } ]

CLUSTER NODESS RETURNED:  [ { _id: '58a9a4805c1f',
    node_url: 'http://222.22.22.22:2222/nodes',
    cpu: 40 },
  { _id: '58999a9a4805c23',
    node_url: 'http://111.11.1.111:1111/nodes',
    average_cpu: 15 } ]

正如您所看到的,两个不同的集合各有两个文档,它们可以通过 job_url 和 node_url 进行关联,例如222.22.22.22:2222 我是否可以基于此将文档连接在一起,以便最终结果是这样的:

[ { _id: '58a9a4805c1f',
    node_url: 'http://222.22.22.22:2222/nodes',
    job_url: 'http://222.22.22.22:2222/jobs',
    progress: 0,
    queue: 0 },
    cpu: 40 },
  { _id: '58999a9a4805c23',
    node_url: 'http://111.11.1.111:1111/nodes',
    job_url: 'http://111.11.1.111:1111/jobs',
    progress: 0,
    queue: 0,
    average_cpu: 15 } 

任何帮助/提示将不胜感激!

最佳答案

mongo 中没有 join,因为 mongo 是一个 nosql 数据库,请在此处阅读 https://en.wikipedia.org/wiki/NoSQL

简而言之,当需要快速检索和高可用性数据时(join 很慢,所以它不适合这里),则使用 nosql 数据库,而不是那样,当你遇到像你这样的情况时,你应该考虑重构你的模式在这里解释得很清楚https://docs.mongodb.com/manual/core/data-modeling-introduction

当然,你可以自己手动进行连接,但这样你就错过了 mongo 的要点

关于javascript - 在 Node Js 中连接两个不同的集合形成 mongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42116833/

相关文章:

javascript - 是否可以创建一个关于 :config settings? 的更改的 Firefox WebExtension 如何?

javascript - 你能把一张 Canvas 放在另一张 Canvas 里面吗?

memory - 如何查看cygwin中进程使用了​​多少内存?

java - Morphia:将 DBObject 转换为实体

node.js - 只获取每个用户的一份文档 - mongoDB

javascript - Mongoose:类型错误: 'mongooseSchemahere' 不是函数

javascript - explode 函数在文本区域中返回单行

javascript - 尝试使用 JS ES6 进行 gulp 时出现意外标记 {

node.js - GRPC微服务架构实现

javascript - 更改多个 html5 视频播放器速度