[英]How to find document from object property in array property in model
我有兩個模型:
用戶:
{
name: { type: String, required: true},
company: { type: Schema.Types.ObjectId, ref: "Company" },
}
公司:
(
name: { type: String, required: true},
users : [{
user: {type: Schema.Types.ObjectId, ref: "User"},
permistion: {type: Number, default: 0}
}]
)
1.我想在公司中找到permistion = 1
的用戶。
2.我想找到用戶和結果用戶: {name, company, permistionCompany}
我已經解決了這個問題。 我的模型的構造太糟糕了,我修復了模型:
用戶:
{
name: { type: String, required: true},
company: {
id: { type: Schema.Types.ObjectId, ref: "Company" },
userPermission: { type: Number, default: 0}
},
公司:
(
name: { type: String, required: true},
users : [{user: {type: Schema.Types.ObjectId, ref: "User"}],
)
當我想在該公司中找到用戶並且permistion = 1時,我只使用:
User.find({_id: userId, company.id: companyId, company.userPermistion: 1})
1)可以在數組內部查詢的兩種方法。 您可以使用$ elemMatch( https://docs.mongodb.com/manual/reference/operator/query/elemMatch/ ),或者,在給出架構的結構的情況下,您可以執行以下操作:
Company.find({"users.permistion": 1}, (error, docs) => {
console.log(docs)
})
2)不太了解這個問題,但是假設您希望從上述查詢中從“用戶”集合中獲取信息。 如果是這樣,您可以執行.populate。 一個好的指南將在這里: https : //medium.com/@nicknauert/mongooses-model-populate-b844ae6d1ee7
Company.find({"users.permistion": 1}).populate("users.user", (error, docs) => {
console.log(docs)
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.