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

Mongodb menemukan membandingkan elemen array

Karena Anda memiliki format bidang yang tepat setiap kali (lingkaran adalah larik dua elemen), Anda dapat mengubahnya dalam kerangka agregasi menjadi dua bidang dan kemudian membandingkannya dalam proyeksi, dan mencocokkan untuk mendapatkan kembali hanya elemen yang memenuhi kebutuhan Anda elemen array kedua lebih besar dari elemen array pertama.

db.place.aggregate( [
      { $unwind : "$center" },
      { $group : { _id : "$_id", 
                   centerX : {$first:"$center"}, 
                   centerY : {$last:"$center"} 
      } },
      { $project : { YgtX : { $gt : [ "$centerY", "$centerX" ] } } },
      { $match : { YgtX : true } }
] );

Sekarang, jika array Anda adalah pasangan nilai numerik yang berubah-ubah, maka Anda dapat menggunakan yang di atas.

Anda mengatakan dalam komentar bahwa pasangan Anda mewakili koordinat (lat, long) - perlu diingat bahwa dalam pasangan koordinat MongoDB selalu disimpan selama, lat - jika nilai x, y Anda yang sebenarnya adalah koordinat di tempat datar (berlawanan dengan bola), Anda dapat menemukan semua dokumen yang memiliki koordinat Y lebih besar dari koordinat X dengan satu kueri geospasial:

db.place.find( { center : { $geoWithin : { $geometry : {
                  type:"Polygon", 
                  coordinates:[[[50,50],[-50,50],[-50,-50],[50,50]]]
} } } } );

Kueri di atas mengasumsikan bahwa sistem koordinat Anda bergerak dari -50 ke 50 sepanjang X dan Y dan menemukan semua titik dalam segitiga yang mewakili semua koordinat yang memiliki Y>=X.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana saya bisa menangani persimpangan larik di find({})?

  2. Kesalahan fatal PHP:Kelas 'MongoDate' tidak ditemukan

  3. Bagaimana cara mengelola koneksi MongoDB di aplikasi web Node.js?

  4. Bug mongoid mengembalikan dokumen pertama saat memanggil terakhir?

  5. Bagaimana kami bisa memberikan kueri untuk dokumen yang disematkan melalui driver java?