2015-09-17 52 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。