我正在开发一个使用MongoDB的项目;我想听听您对我想要实施的功能的看法。 特别是"用户"居住在"城市"他们提供的服务"服务"。 我创建了三个代表上述三个实体的集合: User集合与City有一对一的引用,与Service有一对多的引用。 我想创建一个搜索功能,搜索用户集合和引用的集合中的可用给定字符串。 因此给出了以下两个用户,两个城市和三个服务...... 用户
{
_id:"u1",
name:"Jhon",
City: ObjectId("c1"),
Services: [
ObjectId("s1"),
ObjectId("s2")
]
}
{
_id:"u2",
name:"Jack",
City: ObjectId("c2"),
Services: [
ObjectId("s2"),
ObjectId("s3")
]
}
市
{
_id:"c1",
name: "Rome"
}
{
_id:"c2",
name: "London"
}
服务
{
_id:"s1",
name: "Repair"
}
{
_id:"s2",
name: "Sell"
}
{
_id:"s3",
name: "Buy"
}
...并且搜索单词" R",结果应该是u1用户(由于R在"罗马"和"修复" )。 鉴于我无法进行连接,我正在考虑制作一个mongo shell脚本,该脚本为User集合添加了一个附加字段,其中包含所有可搜索的字符串。 如下例所示
{
_id:"u1",
name:"Jhon",
City: ObjectId("c1"),
Services: [
ObjectId("s1"),
ObjectId("s2")
],
"idx":{
city: "Rome",
services:["Repair","Sell"]
}
}
最后问题...... 你认为这是一个好的选择吗?你能提出一个替代解决方案(或分享一个关于它的链接,我没有找到任何有用的解决方案)? 你将如何保持不断更新的领域;例如,引用的城市名称或用户提供的服务是否会发生变化?