Saya mencoba mencari tanggal minimum semua dokumen dalam koleksi. Saya telah mendekati ini sejauh ini dengan fungsi sortir dan mengambil yang pertama saya temukan, lihat di sini:

earliestTime = function (kitUser) {
    'use strict';
    var res, earliestTime;
    res = Cards.findOne({ kit: kitUser }, { fields: { created: 1 } }, { sort: { created: 1 } });
    console.log('Created date: ' + res.created);
    earliestTime = new Date(res.created - 20000);
    console.log('Earliest time: ' + earliestTime);
    return earliestTime;
};

Saya kemudian mengurangi 20 detik dari nilai yang saya temukan dan mengembalikan nilai itu ke insert dokumen baru yang memiliki 20 detik lebih sedikit di bidang yang dibuat daripada yang paling awal saya temukan sebelumnya.

modifierObject = {};
modifierObject.created = earliestTime(kitUser);

Fungsi earliestTime memberikan hasil yang tepat ketika saya melihat keluaran konsol:

I20160516-15:53:14.849(7)? Created date: Wed Apr 06 2016 12:00:11 GMT+0700 (ICT)
I20160516-15:53:14.849(7)? Earliest time: Wed Apr 06 2016 11:59:51 GMT+0700 (ICT)

Namun, ketika fungsi ini dipanggil 21 kali dengan beberapa operasi baca/tulis di antara setiap panggilan, setiap dokumen yang dimasukkan memiliki stempel waktu yang sama di bidang yang dibuat:

{ "_id" : "xcd3EfKfS6iLGvcsP", "created" : ISODate("2016-04-06T04:59:51.183Z") }
{ "_id" : "bvL3f8NHHZM8Ytdma", "created" : ISODate("2016-04-06T04:59:51.183Z") }
{ "_id" : "gAirEbicdWJz9CELB", "created" : ISODate("2016-04-06T04:59:51.183Z") }
{ "_id" : "kgAg6Jt2P89mTJYgN", "created" : ISODate("2016-04-06T04:59:51.183Z") }
{ "_id" : "xeqR5K2fxNmgEv4bb", "created" : ISODate("2016-04-06T04:59:51.183Z") }
{ "_id" : "PgPimNRxj2zBuS8M2", "created" : ISODate("2016-04-06T04:59:51.183Z") }
{ "_id" : "snwEWeXpn4Ampsito", "created" : ISODate("2016-04-06T04:59:51.183Z") }
{ "_id" : "8RCS8YQLxY7tY6Ruk", "created" : ISODate("2016-04-06T04:59:51.183Z") }
{ "_id" : "tEqRJs49RNvCzkMz6", "created" : ISODate("2016-04-06T04:59:51.183Z") }
{ "_id" : "PJnZ7Z4WH6rTTw626", "created" : ISODate("2016-04-06T04:59:51.183Z") }
{ "_id" : "J2L6KPhzxcva3rttJ", "created" : ISODate("2016-04-06T04:59:51.183Z") }
{ "_id" : "YR5R6ShakPxCXgj54", "created" : ISODate("2016-04-06T04:59:51.183Z") }
{ "_id" : "Ajd6D8E8WrRB47q7d", "created" : ISODate("2016-04-06T04:59:51.183Z") }
{ "_id" : "g5CQgjbPH7NoytyMw", "created" : ISODate("2016-04-06T04:59:51.183Z") }
{ "_id" : "s9NgtsiR7WbjgeKLr", "created" : ISODate("2016-04-06T04:59:51.183Z") }
{ "_id" : "NPtZMHkAdqySShD3a", "created" : ISODate("2016-04-06T04:59:51.183Z") }
{ "_id" : "XxpWREjutAjbgHyME", "created" : ISODate("2016-04-06T04:59:51.183Z") }
{ "_id" : "6ZsiL2ZgidWjk3cgb", "created" : ISODate("2016-04-06T04:59:51.183Z") }
{ "_id" : "pvXiEaJgkuHEKijbB", "created" : ISODate("2016-04-06T04:59:51.183Z") }
{ "_id" : "im4GzumrE6RARNLbe", "created" : ISODate("2016-04-06T04:59:51.183Z") }

Saya bingung bagaimana ini bisa terjadi. Hasil yang saya harapkan adalah (cap waktu):

"created" : ISODate("2016-04-06T04:59:51.183Z")
"created" : ISODate("2016-04-06T04:59:41.183Z")
"created" : ISODate("2016-04-06T04:59:31.183Z")
"created" : ISODate("2016-04-06T04:59:21.183Z")

Saya menduga ada yang salah dengan fungsi saya dengan pengurutan, maka pertanyaan saya bagaimana saya dapat lebih mudah menemukan tanggal minimum di MongoDB.

Terima kasih sebelumnya!

1
a4xrbj1 16 Mei 2016, 13:07
Di mana sisipan Anda?
 – 
Rafael Teles
16 Mei 2016, 15:32
Sisipan datang pada tahap selanjutnya. Ini adalah bagian dari aplikasi dengan lebih dari 10.000 baris kode.
 – 
a4xrbj1
16 Mei 2016, 15:59

1 menjawab

Jawaban Terbaik

Oke, saya menemukan kesalahan dalam proyeksi saya, baris ke-4 harus:

res = Cards.findOne({ kit: kitUser }, { fields: { created: 1 }, sort: { created: 1 } }); 

Saya telah mengabaikan bahwa proyeksi adalah satu objek dan oleh karena itu tanda kurung pertama harus ada di sekitar semua opsi seperti fields dan sort.

Artikel ini sangat membantu dalam mengidentifikasinya dan terima kasih kepada Marcel Fahle karena telah menunjukkannya:

https://themeteorchef.com/snippets/mongodb-queries-and-projections/

2
a4xrbj1 16 Mei 2016, 17:15