對於我來說,我使用MongoDB的存儲一大堆來自50個國家的產品,在DB項目看起來是這樣的:使用基於關鍵AND值的PHP和MongoDB排序結果?
{
_id: xxxxxxxxxxxxxxx,
country: 'au',
title: 'Equipment X',
price: 1000,
},
{
_id: xxxxxxxxxxxxxxy,
country: 'us',
title: 'Equipment Y',
price: 1000,
},
...
...
我想知道,如果它是在所有可能的查詢所有產品並按照國家排序au FIRST,然後是其餘的產品。簡單的MongoDB排序似乎只按鍵排序。如果可能,是否涉及地圖/縮小?
編輯:更詳細的例子
文件中收集:
{ country:'cn', title:'Equipment A', price:'100'},
{ country:'au', title:'Equipment B', price:'100'},
{ country:'za', title:'Equipment C', price:'100'},
{ country:'us', title:'Equipment D', price:'100'},
{ country:'nz', title:'Equipment E', price:'100'},
{ country:'it', title:'Equipment F', price:'100'},
{ country:'nz', title:'Equipment G', price:'100'},
{ country:'au', title:'Equipment H', price:'100'},
我要尋找一種將返回產品新西蘭是在頂部,然後通過後續所有其他產品,如下所示:
{ country:'nz', title:'Equipment E', price:'100'},
{ country:'nz', title:'Equipment G', price:'100'},
{ country:'au', title:'Equipment B', price:'100'},
{ country:'au', title:'Equipment H', price:'100'},
{ country:'cn', title:'Equipment A', price:'100'},
{ country:'it', title:'Equipment F', price:'100'},
{ country:'us', title:'Equipment D', price:'100'},
{ country:'za', title:'Equipment C', price:'100'},
你好!這隻會按字母順序排列國家。如果我想先將其分類爲具有** nz **的產品,那麼其餘的會隨之而來,它不會僅僅通過關鍵排序工作。 – Bundeeteddee 2012-01-18 03:32:56
我不太清楚我明白你想做什麼。爲什麼你不能只做兩個查詢,如果你想在一個國家的優先次序。或者你可以在NZ上有另一個名爲「countryOrder:0」的鍵/值,然後,在你指定真實的訂單時,你希望國家出現。 – 2012-01-18 03:36:53
兩個查詢將要求我將結果縫合在一起,並且爲了尋呼目的而使用'skip()'和'limit()'失敗。我剛剛編輯了這個問題以獲得更詳細的(?)示例。對不起,我有一段艱難的時間來解釋我想要做的事情。 – Bundeeteddee 2012-01-18 08:16:40