由於mongodb不支持連接,並且我需要在各種業務集合,服務和用戶中進行搜索,所以我提出了一個解決方案,但我需要它來驗證和/或改進。在幾個引用的集合中查找含有mongo的文本
方案的流程是這樣的:
Business = Schema({
name:String
services:[{
type:ObjectId,
ref:'Services'
}],
specialist:[{
type:ObjectId,
ref:'User'
}]
})
User = Schema({
full_name:String
businesses:[{
_id:{
type:ObjectId,
ref:'Business'
},
name:String,
role:String,
is_owner:Boolean
}]
})
Service = Schema({
name:String,
business:{
type:ObjectId,
ref:'Business'
},
specialist:[{
type:ObjectId,
ref:'User'
}]
})
Search = Schema({
text:{
type:String,
index:'text'
},
business:{
_id:{
type:ObjectId,
ref:'Business'
},
name:String
},
services:[{
_id:{
type:ObjectId,
ref:'Service'
},
name:
}],
specialist:[{
_id:{
type:ObjectId,
ref:'User'
},
full_name:String
}]
})
企業提供服務,服務是由專家進行的,每一次業務增加了一個專家,用戶將有一個新的業務,其數據具有特定的作用。
這個想法是,當您創建一個業務時,您在搜索中創建一個文檔,當業務創建服務時,您將其分配給專家,它們將被添加到搜索集合中。在本文檔的每個修改中,文本字段都將更新爲商業名稱,服務和專家的連接,這樣他們將擁有一個集合,可在其中執行文本索引搜索。你正在尋找的任何領域都將導致業務。
誰在模型和搜索常用集合的解決方案中都有建議。