收集最后N个项目

时间:2017-03-16 15:46:27

标签: c# mongodb

我正在尝试mongo db。我需要从集合中获取最后5或10个元素。

我需要在mongodb中使用该查询:

SELECT * FROM records ORDER BY id DESC LIMIT 10

如果可能的话,

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

我怎样才能在c#和mongodb中做到这一点?

2 个答案:

答案 0 :(得分: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 Driver:

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);

请注意,我假设您的SQL查询中的id引用了Identity列。 Mongo等价物将是_id

答案 1 :(得分:0)

假设您的记录中有索引的dt字段:

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

如果没有dt字段,您也可以这样做:

117 + 10 = 127