2016-04-01 17 views
0

"timestamp" ile bir "posts" tablosuna sahibim.Rethinkdb daha eski bir sorguda filtrele

Şimdi, tüm iletilerin en son gönderisini HARİÇ BIRAKMAK için 1'den fazla gönderi olan tüm kullanıcılardan istiyorum. Ben başarıyla 1'den fazla yazı olan kullanıcıları kontrol edebilirsiniz bu sorgu ile

:

Ben yaparak belirli bir kullanıcı son yazılan alabilirsiniz

r.table("post") 
.filter({userId: 'xxx'}) 
.max('timestamp') 

Şimdi gerek Bunları bir şekilde birbirine bağlayın ve sonra her satırdaki zaman damgasını eşit olmadıklarını görmek için maks ('zaman damgası') ile karşılaştırın. Aşağıdaki ben vardı ama bu kesinlikle yanlış

.filter(r.row('timestamp').ne(r.row('timestamp').max('timestamp')('timestamp'))) 

Tüm bunları nasıl bir araya getirdiğime dair herhangi bir tavsiye var mı? Böyle

cevap

1

şey çalışmak gerektiğini: sözdizimi hataları için ayırmalarla

r.table('post') 
.group({ 
    index: 'userId' 
}) 
.ungroup() 
.filter(function(doc) { 
    return doc('reduction').count().gt(1) 
}) 
.group('group')('reduction') 
.nth(0) 
.orderBy(
    r.desc('timestamp') 
).skip(1) 

; Bu sorguyu python kullanarak oluşturdum ve javascript'e dönüştürdüm. Özellikle .nth(0) parça hakkında emin değilseniz, asla javascript'te kullanmayın. Python'da sadece [0].