0

我有两个集合:用户和通知。我需要获取所有管理员用户的通知列表

我来自 sql 上下文。所以在mssql中我能够做到:

SELECT notificationId, notificationText  FROM notifications 
WHERE username IN (select username from users where userrole = 'admin');

我在 mongodb 中尝试了以下操作:

db.notificaitons.find({ username: {$in:{/*get list of admin users here*/} }}, 
{notificationId: 1, notificationText: 1})

有没有办法在单个数据库查询中做到这一点?还是我应该在两个不同的查询中进行。(我正在使用带有猫鼬的节点 js)

我真的无法理解逻辑。谢谢。

4

1 回答 1

0

您需要两个查询,或修改您的架构。我建议您在通知集合中不仅存储 ,还username存储userrole

{
   username: "derickr",
   userroles: [ "admin", "newbie" ].
   notificationId: 42,
   notificationText: "This is awesome",
}

如您所见,我将 userroles 设置为一个数组,具有多个用户角色 - 我规定这也是您所拥有的。现在可以通过以下方式轻松查询管理员用户的所有通知:

// create index
db.notifications.ensureIndex( { userroles: 1 } } );

// do query
db.notifications.find( { userroles: "admin" } );
于 2013-08-14T14:01:01.770 回答