MongoDB创建依赖于用户的视图/管道



我刚刚在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
}

这有可能吗?如果是这样的话,如果有人能提供一个例子,我将不胜感激。

谢谢

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));

最新更新