猫鼬中的 findOne 子文档
Posted
技术标签:
【中文标题】猫鼬中的 findOne 子文档【英文标题】:findOne Subdocument in Mongoose 【发布时间】:2012-11-07 18:51:49 【问题描述】:我正在 Mongoose 中尝试对子文档进行 findOne 查询,但运气不佳...
我的架构如下所示:
var Team = mongoose.Schema(
teamName: String,
teamURL: String,
teamMembers: [username: String, password: String, email: String, dateCreated: Date],
);
var Team = db.model('Team', Team);
我只需要从我正在使用此查询的文档中找到用户的电子邮件
Team.findOne('teamMembers.username': 'Bioshox', 'teamMembers.$': 1, function (err, team)
if (team)
console.log(team[1].email);
);
任何帮助将不胜感激!
【问题讨论】:
我有一个非常相似的问题Here你能看看吗? 【参考方案1】:您缺少对象的teamMembers
级别,因此您的代码需要更改为以下内容:
Team.findOne('teamMembers.username': 'Bioshox', 'teamMembers.$': 1,
function (err, team)
if (team)
console.log(team.teamMembers[0].email);
);
【讨论】:
你也可以使用 .populate('teamMembers') 吗? 您能解释一下'teamMembers.$': 1
或指向有关它的文档吗?
$
是位置运算符,用于标识teamMembers
数组的元素,以根据与查询选择器匹配的第一个元素进行更新。文档here.
我不认为 $ 位置运算符适用于猫鼬...一直在寻找如何去做...
@JohnnyHK 的评论文档现在重定向到update operation。但是,他使用的答案是projection operator。以上是关于猫鼬中的 findOne 子文档的主要内容,如果未能解决你的问题,请参考以下文章