【问题标题】:Mongoose Find By Ref IDMongoose 按参考 ID 查找
【发布时间】:2019-06-14 19:37:31
【问题描述】:

所以我有两个模式,用户和公司

const UserSchema = new mongoose.Schema({
    _createdAt: Date,
    company: {type: mongoose.Schema.Types.ObjectId, ref: 'company'},
    email: String,
});


const CompanySchema = new mongoose.Schema({
    _createdAt: {
        type: Date,
        required: true
    },
    name: {
        type: String,
        required: true
    }
});

const userModel = mongoose.model("user", UserSchema, "user");
const companyModel = mongoose.model("company", CompanySchema, "company");

我现在想通过公司 _id 查询特定用户,但由于某种原因这不起作用,即使我的数据库中有一个具有确切公司 ObjectId 的用户,它也会返回一个空数组。

userModel.find({company: "5cfa4352ffc1c8135d8276a4"})
         .exec((err, user) => {
             console.log(user);
         }

在我的 mongo shell 命令中

db.user.find({company: "5cfa4352ffc1c8135d8276a4"})

按预期返回用户,为什么这在猫鼬中不起作用?提前致谢

【问题讨论】:

  • 嗨@Jan Schmutz,您找到解决方案了吗?我也有类似的情况。

标签: node.js mongodb express mongoose


【解决方案1】:

试试这个

const ObjectId = require('mongodb').ObjectID;

然后

db.user.find({company: ObjectId("5cfa4352ffc1c8135d8276a4")})

我希望它会起作用

【讨论】:

    【解决方案2】:

    如果您想通过该 id 查找,您可能需要这样做:

    const mongojs = require('mongojs');
    const ObjectId = mongojs.ObjectId;
    
    db.user.find({company: ObjectId("5cfa4352ffc1c8135d8276a4")})
    

    由于您使用的是 moongose,您可以像这样获取 ObjectId:

    const mongoose = require('mongoose');
    const objectId = mongoose.Types.ObjectId('569ed8269353e9f4c51617aa')
    

    【讨论】:

    • 不,我之前试过,它也不起作用,如果我查询用户 _id 我也不需要这个语法,虽然响应的谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 2019-12-27
    • 2019-06-10
    • 2017-01-13
    • 2014-09-30
    • 2022-11-11
    相关资源
    最近更新 更多