2015-09-17 53 views
0

使用此数据集,我试图做一个查询,返回所有文档,相关文章的排名。但是我不知道只有一个mongo查询是否可能。Mongo通过特定的过滤器查找查询

content_business : { 
id : {….} , 
content : { 
    uid : «», 
    FL : "bla", 
    langRef : 1, 
    articles : [ 
     { 
      name : « aName », 
      rank : 104 
     }, 
     { 
      name : « unNom », 
      rank : 102 
     } 
    ] 
} 
} 

内容包含langRef。这是用来获得正确文章的索引。这里的值为1意味着相关的文章是索引为1的文章{名称:«unNom»,等级:102}。

对于我做了db.find时刻({«FL:BLA»}),然后用一个外部程序,我发现了相关的(有点文章[langRef] .rank)

军衔

但不确定这是更好的解决方案。

你有什么想法吗?

Regards,

Blured。

+0

您可以通过聚合来完成,但在应用程序级别排序可能是更简单的方法。 – Philipp

+0

[如何排序数组中的mongo文档中的字段]的可能重复(http://stackoverflow.com/questions/32605984/how-to-sort-the-field-in-the-mongo-document-这此结果内部阵列/) – Philipp

回答

0

它不是一个真正的排序,据我的理解:

我在进入已经得到:

content_business : { 
    id : {….} , 
    content : { 
     uid : «», 
     FL : "bla", 
     langRef : 1, 
     articles : [ 
      { 
       name : « aName », 
       rank : 104 
      }, 
      { 
       name : « unNom », 
       rank : 102 
      } 
     ] 
    } 
}, 
{ 
    id : {….} , 
    content : { 
     uid : « 99999 », 
     FL : "bla", 
     langRef : 0, 
     articles : [ 
      { 
       name : « aaaa », 
       rank : 888 
      }, 
      { 
       name : « bbbb », 
       rank : 102 
      } 
     ] 
    } 
} 

我想在结果

{ 
    id : {...}, 
    content : { name : "unNom", rank : 102} 
}, 
{ 
    id : {...}, 
    content : {name : "aaa", rank : 888} 
} 

第一文件给出名称unNom & rank 102作为指定langRef是1

第二份文件给出名称“aaa”& rank 888,因为指定的langRef为0

Regards, Blured。