我有一段时间了解MongoDB中的一对多关系选项。我有一个相当简单的用例,我想证明这一点,而且我似乎无法在我的Google(和Stack Overflow)-Fu中找到任何好的步骤。
如果我访问mongo的命令行工具,请将文档插入" users"具有与对象中的_id对应的role_id的String数组的集合" roles"收藏...我如何在猫鼬方面将所有这些绑在一起?当我使用findOne方法时,它似乎只是按原样拉出" role_id"所以我知道我必须遗漏一些东西。
如果我将所有这些角色放入用户而没有任何参考,那么如果我需要启用或禁用角色会发生什么?我是否需要更新每个用户的每个相关角色?
非常感谢另一位新蒙古人的帮助和耐心!
答案 0 :(得分:2)
根据你的解释,你忘了使用“填充”#39;在您的查询中。请注意,结果不会包含链接文档,因此您需要使用'填充'为了让猫鼬知道 - 嘿,我想提取有关这个角色的信息'。
示例:
//promises
User
.findOne(<searchQuery>)
.populate('roles')
.exec()
.then(function(foundUser){
return foundUser; //do something with results (foundUser)
})
.onReject(function(err){
throw err; //do something with error
});
//callbacks
User
.findOne(<searchQuery>)
.populate('roles')
.exec(function(err, foundUser){
if(err){
throw err; //do something with error
} else {
//do something with results (foundUser)
}
});
请检查以下链接: