MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bandingkan dua bidang tanggal di MongoDB

Anda tidak dapat membandingkan bidang dengan nilai bidang lain dengan pencocokan kueri normal. Namun, Anda dapat melakukannya dengan kerangka kerja agregasi:

db.so.aggregate( [
    { $match: …your normal other query… },
    { $match: { $eq: [ '$modified', '$sync' ] } }
] );

Saya menempatkan ... kueri normal Anda yang lain ... di sana karena Anda dapat membuat bit itu menggunakan indeks. Jadi jika Anda ingin melakukan ini hanya untuk dokumen di mana name bidangnya adalah charles Anda dapat melakukan:

db.so.ensureIndex( { name: 1 } );
db.so.aggregate( [
    { $match: { name: 'charles' } },
    { $project: { 
        modified: 1, 
        sync: 1,
        name: 1,
        eq: { $cond: [ { $gt: [ '$modified', '$sync' ] }, 1, 0 ] } 
    } },
    { $match: { eq: 1 } }
] );

Dengan masukan:

{ "_id" : ObjectId("520276459bf0f0f3a6e4589c"), "modified" : 73845345, "sync" : 73234 }
{ "_id" : ObjectId("5202764f9bf0f0f3a6e4589d"), "modified" : 4, "sync" : 4 }
{ "_id" : ObjectId("5202765b9bf0f0f3a6e4589e"), "modified" : 4, "sync" : 4, "name" : "charles" }
{ "_id" : ObjectId("5202765e9bf0f0f3a6e4589f"), "modified" : 4, "sync" : 45, "name" : "charles" }
{ "_id" : ObjectId("520276949bf0f0f3a6e458a1"), "modified" : 46, "sync" : 45, "name" : "charles" }

Ini mengembalikan:

{
    "result" : [
        {
            "_id" : ObjectId("520276949bf0f0f3a6e458a1"),
            "modified" : 46,
            "sync" : 45,
            "name" : "charles",
            "eq" : 1
        }
    ],
    "ok" : 1
}

Jika Anda ingin bidang lain, Anda perlu menambahkannya di $project .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Baca dari replika sekunder yang diatur di mongodb melalui javascript

  2. Bagaimana menemukan semua rentang tanggal tumpang tindih dengan rentang tanggal lain di MongoDB?

  3. objek lokasi diharapkan, susunan lokasi tidak dalam format yang benar

  4. Dengan driver mongoDB C#, bagaimana cara mengeluarkan runCommand?

  5. Cara termudah untuk menyalin/mengkloning contoh dokumen luwak?