2017-03-16 3 views
0

Ich versuche Mongo db. Ich brauche die letzten 5 oder 10 Elemente aus einer Sammlung.Holen Sie sich die letzten N Artikel auf Sammlung

ich brauche die Abfrage in mongodb verwenden:

SELECT * FROM records ORDER BY id DESC LIMIT 10 

auch, wenn möglich,

SELECT * FROM records WHERE value = 'myValue' ORDER BY id DESC LIMIT 10 

wie kann ich dies in C# und MongoDB?

Antwort

0

vorausgesetzt, Sie haben ein indiziertes dt Feld in Ihre Einträge:

db.collection.find({value: 'myValue'}).sort({dt: -1}) 

Ohne dt Feld können Sie auch tun:

db.collection.find({value: 'myValue'}).sort({_id: -1}) 
1

Mongo Shell:

/* 1 */ db.MyCollection.find({}).sort({ _id: -1 }).limit(10) 
/* 2 */ db.MyCollection.find({ value: 'myValue' }).sort({ _id: -1 }).limit(10) 

C# Mongo Fahrer:

MongoClient mongoClient = new MongoClient(mongoConnString); 
IMongoDatabase mdb = mongoClient.GetDatabase(dbName); 
IMongoCollection<MyCollection> coll = mdb.GetCollection<MyCollection>(myCollection); 

var sort = Builders<MyCollection>.Sort.Descending("_id"); 
var filter1 = Builders<MyCollection>.Filter.Empty; 
var filter2 = Builders<MyCollection>.Filter.Eq("value", "myValue"); 

/* 1 */ var results = coll.Find(filter1).Sort(sort).Limit(10); 
/* 2 */ var results = coll.Find(filter2).Sort(sort).Limit(10); 

Beachten Sie, dass ich davon ausgehe, dass id in Ihrer SQL-Abfrage auf eine Identity-Spalte verweist. Das Mongo-Äquivalent wäre _id.

Verwandte Themen