MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongodb намира, сравнявайки елементи от масив

Тъй като случайно имате точен формат на полето всеки път (кръгът е масив от два елемента), можете да го трансформирате в рамка за агрегиране в две полета и след това да ги сравните в проекция и да съпоставите, за да получите обратно само елементите, които отговарят на вашето изискване за вторият елемент от масива е по-голям от първия елемент от масива.

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

Сега, ако вашият масив е произволна двойка числени стойности, тогава можете да използвате горното.

Вие казахте в коментарите, че вашата двойка представлява координати (lat, long) - имайте предвид, че в MongoDB координатните двойки винаги са съхранява се като дължина, ширина - ако действителните ви стойности на x, y бяха координати на плоско (за разлика от сферично) място, можете да намерите всички документи, които имат Y координата, по-голяма от X координата, с една геопространствена заявка:

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

Горната заявка предполага, че вашата координатна система преминава от -50 до 50 по X и Y и намира всички точки в триъгълника, който представлява всички координати с Y>=X.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Изберете последните N записа от MongoDB с помощта на node.js

  2. MongoDB групиране и изваждане на стойности от различни документи

  3. Инсталиране на MongoDB в WSL

  4. Предотвратете Spring Data за Mongo да преобразува идентификатори в ObjectId

  5. Инсталиране на MongoDB на CentOS 8