Mongodb 访问用户记录中的数组

Mongodb 访问用户记录中的数组,mongodb,express,mongoose,Mongodb,Express,Mongoose,我需要一些帮助,我可以很好地创建记录;但我无法访问项目数组中的特定记录。如何访问projects数组中的特定记录。我尝试了很多方法,但都没有表现出来。我用的是猫鼬,快递,护照和猫鼬 var userSchema = new mongoose.Schema({ email: { type: String, unique: true, lowercase: true }, password: String, profile: { name: { type: String, default: ''

我需要一些帮助,我可以很好地创建记录;但我无法访问项目数组中的特定记录。如何访问projects数组中的特定记录。我尝试了很多方法,但都没有表现出来。我用的是猫鼬,快递,护照和猫鼬

var userSchema = new mongoose.Schema({
email: { type: String, unique: true, lowercase: true },
password: String,

profile: {
name: { type: String, default: '' },
location: { type: String, default: '' }
},
project:
  [{
    test: String,
    test1: String,
  }],
resetPasswordToken: String,
resetPasswordExpires: Date
});

如果您想找到整个文档,那么可以使用mongoose的find方法。 像userSchema.findById({u id:req.params.id})一样,存储在MongoDB中的文档总是创建它的唯一id,以便您可以访问这些特定文档

如果你只想从这个对象中找到特定的数据,那么你可以使用这个

findOne({u id:id},{project:{$elemMatch:{test:abc}})

这里只显示test=abc的项目,以便您可以更新项目。 在第一个对象中,它匹配该对象并仅选择项目数组中test=abc的那些对象

如果您需要全部使用find,findOne将只提供第一个匹配的对象


你所说的具体是什么意思?按索引记录,还是按字段值记录?我想在数组中按_id访问记录,并在编辑页中显示这些字段值。请共享您正在尝试使用聚合的查询,并使用展开筛选器,如:
{u id:userId,{project:{$elemMatch:{u id:projectId}}}
它应该只返回匹配的项目。