获取集合中与一组密钥匹配的所有文档-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”
。