javascript - Mongoose 将两个查询合并为同一集合

标签 javascript node.js mongodb mongoose

我正在尝试根据同一集合中的另一个文档进行查询以查找文档,如下所示。

第一个找到用户,第二个通过使用收到的用户数据找到数据。但是我想用一个查询来完成它,比如在 SQL 中加入

这是模式

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 - Mongoose 将两个查询合并为同一集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48937122/

相关文章:

javascript - 找不到模块 'sails'

javascript - 如何重试功能?

java - mongodb 尝试在更新中编辑 _id 字段时抛出错误

javascript - Jade/Mongo 输出中的换行符

javascript - 尝试使用 outerWidth() 和 $(window).resize() 水平居中动态宽度元素时出现意外行为

javascript - 如何将选定的选项 id 值传递给 codeigniter Controller

.js 文件中的 php 标签

node.js - Atom Node 调试器在启动时出现两个错误

javascript - 如何使用 mongoose 查询 MongoDB 子文档?

javascript - $(document).ready() 是在 body 中加载所有脚本文件后调用的吗?