gpt4 book ai didi

javascript - 如何找到符合某些条件的 Mongoose 子文档

转载 作者:行者123 更新时间:2023-12-03 07:31:49 24 4
gpt4 key购买 nike

我的简化架构如下所示:

var personSchema = new Schema({
firstName: String,
lastName: String
});

var teamSchema = new Schema({
people: [personSchema]
});

module.exports = mongoose.model('Team', teamSchema);

我想找到所有名为“Alan”的人。我看了this very similar question ,但它找到的是团队,而不是人。 Same here , 我认为。即使我没有人员集合,是否有一个查询会返回人员?

我想我可以使用引用的技术来寻找团队,然后找出他们的人员。我猜是这样的:

teams
.find({})
.populate({
path: 'people',
match: { firstName: { $eq: "Alan" }}
})
.exec().then(function(teams) {
var people = [];
// walk through the found teams, looking through all the people
// whenever one is found named Alan, add it to the people array
});

但是还有更直接的方法,对吧?

最佳答案

根据您的评论,也许您可​​以尝试这个

teamSchema.statics.findPeople = function(name, cb) {
return this.find({'people.firstName': name}, {'people.$': 1}, cb);
}

var Team = mongoose.model('Team', teamSchema);

Team.findPeople('Alan', function(err, data) {
if (err)
console.log(err);
else
console.log(data);
})

关于javascript - 如何找到符合某些条件的 Mongoose 子文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35786198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com