MongoDB 创建用户相关视图/管道
Posted
技术标签:
【中文标题】MongoDB 创建用户相关视图/管道【英文标题】:MongoDB create user dependent view/pipeline 【发布时间】:2022-01-18 15:40:56 【问题描述】:我只是偶然发现了 MongoDB 中的视图,并想知道,原则上是否可以创建一个用户依赖视图。例如,他的用户设置来自 User_Settings 集合。
对于视图,我想出了以下代码,只要事先知道用户名,它就可以正常工作:
[
"$match" :
"name" : "test"
],
"allowDiskUse" : false
当前用户名可通过以下方式访问:
var currentUser = db.runCommand(connectionStatus: 1).authInfo.authenticatedUsers[0].user
但我无法找到如何将这两者合并成一个连贯的视图定义。我试过这样,这显然是行不通的:
"$let" :
vars: currentUser: connectionStatus: 1,
in: connectionStatus: 1
"$match" :
"name" : currentUser
],
"allowDiskUse" : false
这有可能吗?如果是这样,如果有人能提供一个例子,我将非常感激。
谢谢
【问题讨论】:
【参考方案1】:const MongoClient = require('mongodb').MongoClient;
const mongo_uri = `mongodb://$settings.database.host:$settings.database.port`;
// use it for setup
const MongoClient = require('mongodb').MongoClient;
const settings = require('./settings');
const mongo_uri = `mongodb://$settings.database.host:$settings.database.port`;
const bcrypt = require('bcrypt');
const saltRounds = 10;
const user =
username: 'adam',
password: 'password'
;
MongoClient.connect(mongo_uri, useNewUrlParser: true )
.then(client =>
const db = client.db('project');
const collection = db.collection('users');
bcrypt.genSalt(saltRounds, (error, salt) =>
bcrypt.hash(user.password, salt, (error, hash) =>
user.password = hash;
collection.insertOne(user)
.then(() => console.log('User inserted'))
.catch(error => console.error(error));
);
);
).catch(error => console.error(error));
【讨论】:
以上是关于MongoDB 创建用户相关视图/管道的主要内容,如果未能解决你的问题,请参考以下文章