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

Mongodb $where kueri selalu benar dengan nodejs

Pertama, perlu diingat bahwa $where operator hampir tidak boleh digunakan karena alasan yang dijelaskan di sini (kredit masuk ke @WiredPrairie).

Kembali ke masalah Anda, pendekatan yang ingin Anda ambil tidak akan berfungsi bahkan di shell mongodb (yang secara eksplisit mengizinkan fungsi js telanjang dengan $where operator). Kode javascript yang diberikan ke $where operator dijalankan di server mongo dan tidak akan memiliki akses ke lingkungan terlampir ("ikatan konteks").

> db.test.insert({a: 42})
> db.test.find({a: 42})
{ "_id" : ObjectId("5150433c73f604984a7dff91"), "a" : 42 }
> db.test.find({$where: function() { return this.a == 42 }}) // works
{ "_id" : ObjectId("5150433c73f604984a7dff91"), "a" : 42 }
> var local_var = 42
> db.test.find({$where: function() { return this.a == local_var }})
error: {
    "$err" : "error on invocation of $where function:\nJS Error: ReferenceError: local_var is not defined nofile_b:1",
    "code" : 10071
}

Selain itu sepertinya driver mongo asli node.js berperilaku berbeda dari shell karena tidak secara otomatis membuat serial fungsi js yang Anda berikan di objek kueri dan sebaliknya kemungkinan akan menghapus klausa sama sekali. Ini akan memberi Anda padanan timetables.find({}) yang akan mengembalikan semua dokumen dalam koleksi.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 7 Cara Menghitung Dokumen di MongoDB

  2. MongoDB:Bagaimana cara mendapatkan daftar nilai bidang sub-dokumen yang berbeda?

  3. MongoDB $minggu

  4. 5 Cara Mendapatkan Milidetik dari Tanggal di MongoDB

  5. Bagaimana cara mengganti string di semua dokumen di Mongo