MongoDB查询以查找引用模型的ID

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB查询以查找引用模型的ID相关的知识,希望对你有一定的参考价值。

我试图找到一个引用另一个模型的模型的ID。我有一个由一系列挑战组成的用户模型,我必须找到特定用户存在的挑战ID

我的用户模型:

var UserSchema = new mongoose.Schema({
image: String,
displayName: String,
firstName: String,
lastName: String,
password: String,
email: String,
createdAt: Date,
accessToken: String,
isLoggedIn: Boolean,

challenges:[
    {
        type: mongoose.Schema.Types.ObjectId,
        ref:"Challenge"
    }
]
});

我的挑战模型:

var  ChallengeSchema =  new mongoose.Schema({
winner: Boolean,
score: String
});

例如:如果我的用户ID为1且质询ID为89,我必须检查id为1的特定用户是否存在质询ID。

答案

MongoDB是面向文档的,没有连接。理论上,关于一个对象的所有数据都存储在这样的dbs中的一个文档中。因此,在您的情况下,我们的用户会遇到一系列挑战。

另一答案

这是用于检查对于id为1的特定用户是否存在质询id(89)的查询。

User.count({
    _id: 1, // User ID 
    challenges: {
        "$in": [89] // Challenge Id 
    }
}).exec(function(err, count){
    if(err){
        // Handle error
    } else {
        if(count > 0){
            // If count greater than 0 than user(ID-1) contains challenge(ID-89)
        }
    }
});

以上是关于MongoDB查询以查找引用模型的ID的主要内容,如果未能解决你的问题,请参考以下文章

查询以查找 mongodb 图形集合中的连接组件?

如何编写代码以通过关键字在 MongoDB 中查找项目?

MongoDB 查找和展开没有给出正确的结果

MongoDb:将模型字段从字符串数组修改为引用另一个模型的 id 数组的最佳方法是啥?

如何创建一个查询来查找 2 个数字之间的值,这些数字是 MongoDB 中的字符串类型

Mongodb用populate返回更新的对象