我有一个集合:
{
_id - ObjectId
name - string
location - string
..
parentId - ObjectId //link to parent object
}
我有一个过滤器查询,即使使用int值(在C#中)也很好用:
var q = Query.Matches(column, new BsonRegularExpression(string.Format("/^{0}/i", name)));
如何按父对象的名称进行搜索?当然,使用LINQ,没有问题,但是可以在服务器端进行搜索吗?
答案 0 :(得分:5)
MongoDB中没有连接,但您基本上有两个选项:
解决方案1:
_id
和parentId
匹配的所有文档(子项)解决方案2:
除了parentId
之外,还可以直接为name
parentName
的名称与每个文档和查询
答案 1 :(得分:2)
无法通过mongodb中的引用对象字段进行搜索。一般来说monogdb不是关系数据库,所以在我看来它根本不应该支持任何关系。
有一种众所周知的方法是创建额外的字段并存储(非规范化)有关您想搜索的内容的信息。
因此,请按照以下方式更改您的架构以搜索父对象名称:
{
_id - ObjectId
name - string
location - string
..
parentId - ObjectId //link to parent object,
parentName
}
你应该理解的主要想法:mongodb不是真实的,没有加入,没有关系。