まず、フィールドtime
にインデックスを作成します。
db.collection('nameOfYourCollection')
.createIndex(
{ "time": -1 },
null,
function(err, results){
console.log(results);
});
これにより、コレクションのtime
フィールドにインデックスが作成されます。これには時間がかかることがあります。しかし、インデックスが作成されると、クエリははるかに高速になります。クエリでは、この後
ちょうどこの操作を行います。これはあなたのコレクションに挿入された最後の10件のレコードを与える
var cursor = db.collection('nameOfYourCollection').find().sort([ ["time", -1] ]).limit(10);
cursor.forEach(function(doc){
if(doc) console.log("Got the document as : " + JSON.stringify(doc));
}, function(err){
if(err) console.log("Error: " + JSON.stringify(err));
});
を。
cursor
にforEach
の代わりにtoArray
と電話することもできます。このようなもの:
var cursor = db.collection('nameOfYourCollection').find().sort([ ["time", -1] ]).limit(10);
cursor.toArray(function(err, docs){
if(err) console.log("Error: " + JSON.stringify(err));
if(docs){
console.log("Got the document as : " + JSON.stringify(docs));
console.log("This is the latest record that was inserted : " + JSON.stringify(docs[0]));
}
});
希望するものがあります。
mongodbのパフォーマンスを向上させるためにできることはたくさんありますが、それ以上の情報はありません。スキーマ設計を投稿し、正確に何をしようとしているのかを確認し、推奨事項を提示するのがより簡単になります。 – user2263572
こんにちは。あなたの答えに感謝します。 –
私は10の最後のレコードとライブデータレコードを照会したい。小さなコレクションでは、カーソルを使用するときれいですが、大きなコレクション(約20000レコード)では、カーソルが最初のレコードから最後のレコードまでスキャンするのに時間がかかりすぎます。 { \t "_id":のObjectId( "56fe349d0ef0edb520f0ca29")、 \t "トピック": "IoTeam /メッセージ/"、 \t "ペイロード":「20:15:04:01:12:75、-127.00,679 "、 \t" qos ":0、 \t"保持 ":偽、 \t" _msgid ":" 45975d0d。ba68a4" 、 \t "MAC": "20:15:04:01:12:75"、 \t "TEMP": "-127.00"、 \t "ハム": "679"、 \t "時間": "01/04/2016 15:43:09" } –