how can I refer on database's table to another database's table in mongoDB like I have 2 database
user
tablecompanies
tablenow I want to refer companies
table to user
table. is there any possible way to connect this in nodejs and mongodb
You can do like this to populate across databases in mongoose:
import mongoose, { Schema, Types } from "mongoose"
const db1 = mongoose.createConnection('mongodb://127.0.0.1:27017/company');
const db2 = mongoose.createConnection('mongodb://127.0.0.1:27017/root');
const companySchema = new Schema({ name: String });
const Company = db1.model('Company', companySchema);
const userSchema = new Schema({
name: String,
company: {
type: Types.ObjectId,
ref: Company
}
})
const User = db2.model('User', userSchema);
const users = await User.find().populate("company")
console.log(users)
db1.close()
db2.close()
result:
[
{
_id: new ObjectId("642d5cf980d1e56765814094"),
name: 'myUser',
company: {
_id: new ObjectId("642d5cb580d1e56765814093"),
name: 'myCompany'
}
}
]
From mongosh:
company> db.companies.find()
[ { _id: ObjectId("642d5cb580d1e56765814093"), name: 'myCompany' } ]
company> use root
switched to db root
root> db.users.find()
[
{
_id: ObjectId("642d5cf980d1e56765814094"),
name: 'myUser',
company: ObjectId("642d5cb580d1e56765814093")
}
]