当前位置: 首页 > 知识库问答 >
问题:

如何找到符合某些条件的mongoose子文档

裴实
2023-03-14

我的简化模式如下所示:

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

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

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

我想找到所有叫艾伦的人。我看了这个非常相似的问题,但它发现的是团队,而不是人。我想这里也是。即使我没有persons集合,是否有返回persons的查询?

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

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
});

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

共有1个答案

陈成济
2023-03-14

根据你的评论,也许你可以试试这个

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);
})
 类似资料:
  • 以下是两种猫鼬模式: 雇员模式: 员工详细模式: 雇员详细模式数据会按需保存,例如当特定状态分配给雇员时。在这种情况下,一旦保存了雇员详细信息文档,相应的雇员详细信息ID就会保存回雇员模式作为雇员详细信息ID 现在,员工模式和员工模式之间存在双向关系。 用例: 我想找到所有被标记为特定状态的员工。假设输入状态ID为,那么我想获取EmployeeDetail文档中状态ID为的所有员工。 以下是我尝试

  • 我想只从我的两个对象数组和中得到那些符合标准的子文档。即使我已经找到了这个stackoverflow答案#2(根据标准查找猫鼬子文档),它对我来说并不像期望的那样工作,或者我错过了一些东西。 我的文档如下所示: 它将在和中打印项目及其所有子文档。但是,我只想获取与给定上载id匹配的子文档。我做错了什么? 编辑:这个问题是指用猫鼬来解决它。我不能在Mongoose中使用这个问题的集合语句(只检索Mo

  • 问题内容: 我正在尝试使用操作数AND一起查询集合。我有外壳版本工作: 我找不到Java等效项(使用本机驱动程序)。我已经尝试了各种方法,但这是我最近的尝试: 任何想法有什么问题吗? 问题答案:

  • 在React中开发验证功能。我是一个新手,不想在学习的同时养成任何坏习惯,所以我正在寻找关于如何清理这里的代码块的建议。 该函数检查输入字段,如果它们为空,则将适当的消息附加到数组。检查所有输入字段后,如果该数组为空,则继续提交表单。如果该数组包含错误消息,则该消息将显示到屏幕(未显示) 只是在寻找清理我的条件语句的方法,如果可能的话!谢谢

  • 本文向大家介绍Python 找到列表中满足某些条件的元素方法,包括了Python 找到列表中满足某些条件的元素方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇Python 找到列表中满足某些条件的元素方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 我有一个。我想检查列表中的所有元素是否大于或小于某个条件。我可以通过对每个元素进行迭代来实现。但我想知道,在Collection类中是否有任何方法可以得到答案,就像我们可以分别用和找到最大值或最小值一样。