簡體   English   中英

如何從模型的數組屬性中的對象屬性中查找文檔

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM