猫鼬按Ref ID查找

时间:2019-06-13 12:29:45

标签: node.js mongodb express mongoose

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

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");

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

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

在我的mongo shell中,命令

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

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

2 个答案:

答案 0 :(得分:0)

如果要通过该ID查找,则可能需要执行以下操作:

const mongojs = require('mongojs');
const ObjectId = mongojs.ObjectId;

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

由于您使用的是月光糖,因此您可以像这样获得ObjectId:

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

答案 1 :(得分:0)

尝试一下

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

然后

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

我希望它能起作用