2
我在使用mongodb查詢中的$ in子句。不過,我希望我的結果與我在$ in子句中使用的輸入列表完全一致。
我得到的結果是按照對象的插入順序。
到目前爲止,我讀過的所有文檔都告訴我,排序遊標函數只能用於文檔字段。這是否意味着我不能做到以上?
我在使用mongodb查詢中的$ in子句。不過,我希望我的結果與我在$ in子句中使用的輸入列表完全一致。
我得到的結果是按照對象的插入順序。
到目前爲止,我讀過的所有文檔都告訴我,排序遊標函數只能用於文檔字段。這是否意味着我不能做到以上?
MongoDB不以任何特定順序插入。你可以對結果進行排序。
參見:
http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in
db.updates.ensureIndex({ ts : 1 }); // ts == timestamp
var myFriends = myUserObject.friends; // let's assume this gives us an array of DBRef's of my friends
var latestUpdatesForMe = db.updates.find({ user : { $in : myFriends } }).sort({ ts : -1 }).limit(10);
感謝埃文。然而,在我的具體情況下,$ in查詢的列表順序是從外部派生的。所以,我真的希望我的結果按照與輸入列表中相同的任意順序排序。我試圖在id列表在其他地方排序後基於它們的id來檢索對象。 – ezennse
您可能只是想在事後做到這一點。我發現任何複雜的排序最好在Web層完成,因爲它比在數據庫層中執行更便宜。 – evan
謝謝埃文。這正是我現在計劃要這樣做的方式。非常感謝您的幫助。 – ezennse