Koleksiyonumdan biri, bazı durumları olan işlemlerin (veya görevlerin) bir listesidir. Örneğin, belgelerin listesi ben new > pending > complete
bir statüleri dayalı bu listeyi sıralamak istediğiniz buMongoDB özel bir ifade veya işleve sahip sıralama
{
_id: '57befe57fc956d2e3252890c',
task: 'Go buy milk',
status: 'pending'
},
{
_id: '57befe5efc956d2e3252890d',
task: 'Cook dinner',
status: 'complete'
},
{
_id: '57befe5efc956d2e3252890e',
task: 'Play games',
status: 'new'
}
benzeyebilir.
Bunu ek bir alan oluşturmak zorunda kalmadan MongoDB ile nasıl yapabilirim? Benim durumumda olduğu gibi sıralama sırasının önceden konfigüre edilmesi istenebilir (örneğin kullanıcılar tercihlerini pending > new > complete
'a sahip olabilir)
Eğer t işleyemez neden olarak bir neden var mı Müşteri tarafında mı sıralama yapıyor? En iyi seçenek, tüm belgeleri döndürmek ve kullanıcı tercih sırasına göre alt grupları oluşturmak için süzgeç kullanmaktır. https://lodash.com/docs#filter – dyouberg
Bunu iki boru hattına sahip bir toplama hattıyla yapabilirsiniz. , '$ project' ve' $ sort'. '$ Project' ekstra bir alan yaratacak, '$ cond' operatörü ile önceden yapılandırılmış bir sıraya göre hesaplanan 'skor', yani 'statü' için yukarıdaki puan için 'yeni' 3 olacak, 2 vb. beklemede, "$ sort" boru hattı skor alanını sıralayacaktır. – chridam
@dyouberg Sayfalama kullanıyorum ve sıralama, sunucu tarafında "$ limit" önce yapılması gerekiyor, aksi halde sayfalandırma tamamen dağınık. Neden tüm öğeleri müşteriye indirmeyi öneriyorsun? Bu bant genişliği ve işlemenin kötü bir kullanımı. –