Чтобы добавить пользователя только для записи (на уровне коллекции) в MongoDB, выполните следующие действия.
Скажем, вы хотите иметь пользователя, который может записывать только ( insert only) в определенную коллекцию в определенной базе данных.
Создать файл createuser.js
со следующим содержимым:
function createCollectionWriter(database, username, password, rolename, collection)
{
db.getSiblingDB(database).createUser({
user : username,
pwd : password,
roles : [ ]
});
db.getSiblingDB(database).createRole({
role : rolename,
privileges : [
{
resource : { db : database, "collection" : collection },
actions : [ "insert" ]
}
],
roles : []
});
db.getSiblingDB(database).grantRolesToUser(username, [ rolename ] );
}
И выполнить это из командной строки
$ mongo --eval="load('createuser.js'); createCollectionWriter('yourdb', 'user1', 'pass1', 'rolename', 'col1')"
Это создает пользователя с именем пользователя user1 с паролем pass1 , и этот пользователь имеет только запись доступ к базе данных yourdb collection col1 .
Побочным эффектом этого является то, что создается роль rolename . Если у вас уже есть пользователь, который должен иметь доступ только на запись к той же коллекции, предоставьте роль rolename этому существующему пользователю.
Не стесняйтесь использовать и изменять код, указанный выше:).