javascript – Mongoose为同一个集合组合了两个查询

我试图根据下面相同集合中的另一个文档进行查询以查找文档.

第一个找到用户,第二个通过使用收到的用户数据找到数据.但我想用一个像SQL中的join这样的查询来做

这是架构

var ConnectionSchema = new Schema({
socketId: {
    type: String,
    require: true
},
location: {
    type: [Number],
    index: '2dsphere'
},
user: { type: Schema.ObjectId, ref: "User" },
date: {
    type: Date,
    require: true,
    default: new Date()
}

});

//查询

return mongoose.model("Connection").findOne({ user: userId }).populate("user").then(usr => {
    return mongoose.model("Connection").find({
        location: {
            $near: {
                $maxDistance: config.searchDistance,
                $geometry: { type: Number, coordinates: usr.location }
            }
        },
        user: { $ne: userId },
    });
});

有没有办法用一个单一的查询来做到这一点?
谢谢.

解决方法:

是的,你可以这样做

    return mongoose.model("Connection").findOne({ user: userId })
.populate("user" ,
        match : {$and : [{location: {
            $near: {
                $maxDistance: config.searchDistance,
                $geometry: { type: Number, coordinates: usr.location }
            }
          }},
           {user: { $ne: userId }}]})
        .then(usr => {
        // perform your action
    });
上一篇:javascript – 运行mockgoose.prepareStorage时,Mockgoose正在下载234mb


下一篇:Javascript作用域规则和mongo map / reduce函数