[英]Table Refrence In Mongodb
我有兩個模型 1: UserSchema & 2:todo
**
const userSchema = new mongoose.Schema{ name: String, email: String, todo: { desc} }
**
**
const todoSchema = new mongoose.Schema{ id: id, desc: String }
**
所以我的查詢是我想從基於用戶標識的“待辦事項”集合中獲取基於標識的用戶待辦事項。
我的最終結果將是:
**
{ _id: new ObjectId("63a73aded28fd96ab66a9f30"), name: 'world', email: 'world@gmail.com', todo: [], __v: 0,
}
**
如何使用mongodb獲取todo數據
MongoDB 或一般的文檔數據庫與關系數據庫(如 MySQL、PostgreSQL 等)不同,因為 MongoDB 不像關系數據庫那樣原生支持關系。 然而,mongoose(node.js 中 MongoDB 的 ODM)及其模型有一種使用模型引用來表示關系的方法。 因此,您的模型將是:
const userSchema = new mongoose.Schema{ name: String, email: String, todo: { type: Schema.Types.ObjectId, ref: 'Todo' } }
const todoSchema = new mongoose.Schema{ desc : String }
const User = mongoose.model('User', userSchema);
const Todo = mongoose.model('Todo', todoSchema);
為了獲取用戶並populate
他們的todo
,您可以在 mongoose 中執行以下查詢
const user = await User.findById(id).populate('todo')
我還建議您瀏覽有關填充函數的 mongoose 文檔的此頁面https://mongoosejs.com/docs/populate.html
要在沒有貓鼬的情況下直接在 MongoDB 上進行查詢,您可以使用聚合進行以下查詢。
db.users.aggregate([
{
"$match": {
"_id": 1
}
},
{
"$lookup": {
"from": "todos",
"localField": "todo",
"foreignField": "_id",
"as": "todo"
}
}
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.