获取集合中与一组密钥匹配的所有文档-mongoDB

获取集合中与一组密钥匹配的所有文档-mongoDB,mongodb,mongodb-query,Mongodb,Mongodb Query,我想在我的收藏中找到所有与roleId匹配的用户,如administrator、mod和writer。 roleId存储为相应的数组元素 集合如下所示: { "_id" : "P7xfcnhvQY4mupyRs", "createdAt" : ISODate("2014-11-16T10:37:24.371Z"), "roles" : { "administrator" : [ "Y2FZnfx9Zi4NR6J6e" ] }, "services" : { "password" : { "bc

我想在我的收藏中找到所有与
roleId
匹配的用户,如
administrator
mod
writer
roleId
存储为相应的数组元素

集合如下所示:

{ "_id" : "P7xfcnhvQY4mupyRs", "createdAt" : ISODate("2014-11-16T10:37:24.371Z"), "roles" : { "administrator" : [  "Y2FZnfx9Zi4NR6J6e" ] }, "services" : { "password" : { "bcrypt" : "$2a$10$rWvLQkpiQW55Cp9aF37OtOipuApzM7WKAVTLz/B3HwVypFM4uJEJy" }, "resume" : { "loginTokens" : [  {       "when" : ISODate("2014-11-16T10:37:24.376Z"),   "hashedToken" : "ER4k6eLwKHczqTUE9/7wIs/ZRGyGEPmtknEYn4MH/eM=" } ] } }, "username" : "John" }
{ "_id" : "ic6sNco6HMJJAgnuh", "createdAt" : ISODate("2014-11-16T11:06:09.697Z"), "roles" : { "writer" : [  "Y2FZnfx9Zi4NR6J6e" ] }, "services" : { "password" : { "bcrypt" : "$2a$10$BRLXmsCBD504YdZgLikgr.nNEvnRVStiQwQKaSQlZlhM138mf8cK2" }, "resume" : { "loginTokens" : [ ] } }, "username" : "Harry" }
{ "_id" : "LYAcBy58iiuZSbYhk", "createdAt" : ISODate("2014-11-16T11:06:22.854Z"), "roles" : { "mod" : [  "Y2FZnfx9Zi4NR6J6e" ] }, "services" : { "password" : { "bcrypt" : "$2a$10$Kp7.uyN0dBrl7hRBDAh/wu4niffCXpO3r6EM292xSj2useDjtx28G" }, "resume" : { "loginTokens" : [         {       "when" : ISODate("2014-11-16T11:06:22.859Z"),   "hashedToken" : "1D0uSqV3fy/LanaheiMGZPrIFzI5O3VESDrFKbrDl8g=" } ] } }, "username" : "Peter" }

任何帮助都将不胜感激

如果我正确理解了你的问题,这将是你的答案

db.user_details.find(
{
    $or : 
    [
        {'roles.administrator' : "Y2FZnfx9Zi4NR6J6e"},
        {'roles.mod' :  "Y2FZnfx9Zi4NR6J6e"},
        {'roles.writer' : "Y2FZnfx9Zi4NR6J6e"}
    ]
})

您的收藏有3个相同id的项目?抱歉,复制粘贴错误。我更正了我的帖子,正是我想要的。非常感谢你@JohnnyHK是我最喜欢回答mongo问题的人之一。没有美元或美元,它将如何工作?我测试了它,发现了一个错误。你肯定需要
$或
,我是说
操作符中的
$。您可以直接使用匹配项,如
“roles.administrator”:“Y2FZnfx9Zi4NR6J6e”