2014-04-09 11 views
5

takılı olsun. Gayet iyi çalışan bir tailable imleç var ama masanın başında başlar ve bunu en son eklenen kaydın başlamak olmasını istiyorum. Son eklenmiş kaydın _ID değerini aldığımı varsayarak bunu nasıl yapacağımı biliyorum. Benim sorunum, Java’nın son eklenen kaydı geri getirmek için doğru bir şekilde çalışmasını bulamıyorum. Basitçe, bu Mongo JS komutunun Java eşdeğer gerekir:Java MongoDB FindOne son ben büyük bir veri Ben harici müşteri son kullanılabilir kaydından yemine bağlanmak ve dokunun olması gerekir Mongo besleyen çalıştırıyorum rekoru

db.market.findOne({$query:{}, $orderby:{$natural:-1}}) 

Orada benzer görünüyor buldum burada mesajlar bir çift vardır, ama bunlar istemcisi de bir yerleştirme olduğunu varsayıyoruz kayıtları ve zaten mevcut son ID hakkında bilgi sahibi olur. Neyse

ne doğru gelen Java kodu aynı şeyi başarmak olurdu - Son kullanılabilir kaydın _ID oluyor?

Ben müvekkilim, bir ıskarta kayıt eklemek bu kimliği almak ve oradan başlamak olabilir alternatif olarak tahmin ediyorum, ama bu doğru yolu yapmayı tercih ederim.

Teşekkür

+3

Tam bir gün arıyordum ve temel belgeler varken, web üzerinde herhangi bir yerde sıfır örnek buldum ve çalışmaya çalıştığım herhangi bir izin alamıyorum. Bu yüzden buradayım. – mikepinch

cevap

23

Açık olmak gerekirse, doğal düzen şapkalı koleksiyonların durumlar dışında, ekleme talimatı değildir. Sıralamak için başka kriterlere ihtiyacınız olacak. Varsayılan değer (milisaniye) yerleştirme zamanla başlar ve her zaman tektir olarak

varsayılanı NesneKimliği kullandığınız varsayarsak, ekleme için metrik olarak kullanabilirsiniz.

Ayrıca yerine bir findOne daha bulunan bir şeyi kullanmalıdır. Aşağıdaki deneyin: Eğer gibi yapmak cand senin JAVA kodu bunu yapmak istiyorsanız

db.market.find({}).sort({_id:-1}).limit(1) 
+0

Neden .find' yerine .findOne'? – naoxink

+4

findOne kabuk yardımcı değil (veya did not yazma anda) sıralama seçeneklerini ayarlamak için izin vb – daveh

1

öyle bir belge dönecektir

Document myDoc = (Document)collection.find().sort(new BasicDBObject(<field>,-1)).first(); 

bu son o önemli alanda tarafından sipariş takıldı =)

İlgili konular