Javascript 我是否能够使用mongoose在返回的文档中进行查询?

Javascript 我是否能够使用mongoose在返回的文档中进行查询?,javascript,node.js,mongodb,mongoose,mongoose-schema,Javascript,Node.js,Mongodb,Mongoose,Mongoose Schema,我有一个这样的模式 var TerritorySchema = new Schema({ user: Schema.Types.ObjectId, streets: [streets_schema] )}; var StreetsSchema = new Schema({ name: String, odd: [block_schema], even: [block_schema], tags: [String] )}; 需要能够通过用户id查

我有一个这样的模式

var TerritorySchema = new Schema({
    user: Schema.Types.ObjectId,
    streets: [streets_schema]
)};

var StreetsSchema = new Schema({
    name: String,
    odd: [block_schema],
    even: [block_schema],
    tags: [String]
)};
需要能够通过用户id查找区域。但是,我需要在返回的文档中的街道内按名称查找街道。我就是这样做的

TerritoryModel.findOne({user: userId})
    .then(territory => {
        // now i have my territory parent object
        // and must find street by name
        var streetINeedToFind = null;
        for(i = 0; i < territory.streets.length; i++){
            var street = territory.streets[i];
            if(street.name === streetNameToFind){
                streetINeedToFind = street;
                break;
            }
         }
    })
    // catch blah blah blah ... you know
TerritoryModel.findOne({user:userId})
.然后(地域=>{
//现在我有了我的领域父对象
//必须找到街道的名字
var streeteedtofind=null;
对于(i=0;i
我是NoSQL领域的新手,我只是觉得我应该能够查询我需要的街道,让数据库为我做所有的搜索

territory模式实际上比我上面定义的要大得多,我需要查询嵌套更深的子文档(例如街道内的房子等)。有没有一种方法可以在文档中进行查询,或者有其他更简单的方法来发现子文档,而不是在它们之间循环


我读过聚合,但我不确定这是否是我需要的?我可能错了,也许我正在做的是最佳实践,有人能给我指路吗?

如果您已经查询了完整文档,那么您可以直接使用标准JS数组方法,如:


但是,如果您只需要文档的特定部分,那么您可以使用中的查询投影技术来实现这一点。

我选择使用标准JS方法,最终效果更好,因为我需要访问父对象,以便在修改子文档时调用“保存”方法。
var streetINeedToFind = territory.streets.find(s => s.name === streetNameToFind);