将 MongoDB 视图合并到 Node 中
Posted
技术标签:
【中文标题】将 MongoDB 视图合并到 Node 中【英文标题】:Incorporating MongoDB views into Node 【发布时间】:2018-08-23 03:56:50 【问题描述】:在 MongoDB v3.4 中,views 被添加为一项功能。但是,我无法找到任何资源来说明如何使用在 Node.js 应用程序中创建的视图。我该怎么做,特别是对于聚合视图?
【问题讨论】:
所以您通过 Node.js 应用程序创建了一个视图,并且您想通过该应用程序访问该视图? 【参考方案1】:我也发现这不清楚。令人困惑的是,您需要使用 db.createCollection,这与 MongoDB shell 中的 createView
命令不同。例如:
db.createCollection('myView',
viewOn: 'myCollection',
pipeline: [],
);
其中pipeline
是Aggregation Pipeline。然后,您可以像访问集合一样访问您的视图:
db.collection('myView').find();
【讨论】:
【参考方案2】:我设法按照@dcr24 的描述做到了。这是完整的代码
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
import DB_CONFIG from '../../server/constants/database'
/*
* Requires the MongoDB Node.js Driver
* https://mongodb.github.io/node-mongodb-native
*/
const agg = [
'$group':
'_id': '$entityGroupId',
'totalVisits':
'$sum': '$visits'
,
'$sort':
'totalVisits': -1
,
'$lookup':
'from': 'entities',
'localField': '_id',
'foreignField': 'entityGroupId',
'as': 'entityGroup'
];
MongoClient.connect(
DB_CONFIG.URL,
useNewUrlParser: true, useUnifiedTopology: true,
async function (connectErr, client)
assert.equal(null, connectErr);
const db = client.db('weally');
// db.createView("entityGroupByVisits", 'complaintvisitcounts', agg)
await db.createCollection('entityGroupByVisits',
viewOn: 'complaintvisitcounts',
pipeline: agg,
);
client.close();
);
【讨论】:
以上是关于将 MongoDB 视图合并到 Node 中的主要内容,如果未能解决你的问题,请参考以下文章
使用node+express+mongodb实现用户注册登录和验证功能