首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Spring Data中的MongoDB $graphlookup

Java Spring Data中的MongoDB $graphlookup
EN

Stack Overflow用户
提问于 2017-12-12 10:58:59
回答 1查看 1.5K关注 0票数 1

我正在寻找一种在Resful Web API中使用Java实现图形查找的方法。我正在尝试实现类似于MongoDB (https://docs.mongodb.com/v3.4/reference/operator/aggregation/graphLookup/)的层次结构

代码语言:javascript
复制
    { "_id" : 1, "name" : "Dev" }
    { "_id" : 2, "name" : "Eliot", "reportsTo" : "Dev" }
    { "_id" : 3, "name" : "Ron", "reportsTo" : "Eliot" }
    { "_id" : 4, "name" : "Andrew", "reportsTo" : "Eliot" }
    { "_id" : 5, "name" : "Asya", "reportsTo" : "Ron" }
    { "_id" : 6, "name" : "Dan", "reportsTo" : "Andrew" }

这是employee集合,我想要的是能够创建存储在MongoDB中的结构

代码语言:javascript
复制
 {
   "_id" : 1,
   "name" : "Dev",
   "reportingHierarchy" : [ ]
}
{
   "_id" : 2,
   "name" : "Eliot",
   "reportsTo" : "Dev",
   "reportingHierarchy" : [
      { "_id" : 1, "name" : "Dev" }
   ]
}
{
   "_id" : 3,
   "name" : "Ron",
   "reportsTo" : "Eliot",
   "reportingHierarchy" : [
      { "_id" : 1, "name" : "Dev" },
      { "_id" : 2, "name" : "Eliot", "reportsTo" : "Dev" }
   ]
}

我见过这样的聚合示例,但在graphlookup上还没有

代码语言:javascript
复制
Aggregation agg = newAggregation(
        match(Criteria.where("pageId").is("2210")),
        unwind("postIds"),
        group("_id").sum("1").as("sum")
        //project("$sum").and("pageId").previousOperation()
    );

有没有办法把graphlookup转换成这样的格式?而不是使用match,unwind,group,我可以使用GraphLookupOperation,然后使用get map result。

EN

回答 1

Stack Overflow用户

发布于 2017-12-13 06:26:57

代码语言:javascript
复制
AggregationOperation aggregationOperation = new AggregationOperation() {
        @Override public DBObject toDBObject(AggregationOperationContext aggregationOperationContext) {
            DBObject graphLookup = new BasicDBObject(
                    "from", "individual").append(
                    "startWith", "$reportsTo").append(
                    "connectFromField", "reportsTo").append(
                    "connectToField", "firstName").append(
                    "maxDepth", 2).append(
                    "as", "reportingHierarchy");
            return new BasicDBObject("$graphLookup", graphLookup);

这段代码考虑到了一个变通方法,因为我使用的是较老的版本,我认为是1.10.0 spring mongo。现在我遇到了"reportingHierarchy“看起来不像我想要的问题。它没有给我一个名字。只有reportsTo和reportingHierarchy,也包括我不想要的_class。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47764704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档