MongoDB数据建模:引用文档中的文本搜索模式

时间:2015-02-22 11:04:50

标签: mongodb data-modeling mongo-shell

我正在开发一个使用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"]
    }
}

最后问题...... 你认为这是一个好的选择吗?你能提出一个替代解决方案(或分享一个关于它的链接,我没有找到任何有用的解决方案)? 你将如何保持不断更新的领域;例如,引用的城市名称或用户提供的服务是否会发生变化?

0 个答案:

没有答案