Я искал решение, так как несколько часов без успеха ...клавиши Множественные диапазон в CouchDB просмотров
Я просто хочу, чтобы сделать этот запрос в CouchDB с целью:
select * from database where (id >= 3000000 AND id <= 3999999) AND gyro_y >= 1000
I попытался это:
function(doc) {
if(doc.id && doc.Gyro_y){
emit([doc.id,doc.Gyro_y], null);
}
}
Вот мой документ (запись в CouchDB):
{
"_id": "f97968bee9674259c75b89658b09f93c",
"_rev": "3-4e2cce33e562ae502d6416e0796fcad1",
"id": "30000002",
"DateHeure": "2016-06-16T02:08:00Z",
"Latitude": 1000,
"Longitude": 1000,
"Gyro_x": -242,
"Gyro_y": 183,
"Gyro_z": -156,
"Accel_x": -404,
"Accel_y": -2424,
"Accel_z": -14588
}
Я тогда делать запрос HTTP, как так:
http://localhost:5984/arduino/_design/filter/_view/bygyroy?startkey=["3000000",1000]&endkey=["3999999",9999999]&include_docs=true
я получаю это как ответ:
{
total_rows: 10,
offset: 8,
rows: [{
id: "f97968bee9674259c75b89658b09f93c",
key: [
"01000002",
183
],
value: null,
doc: {
_id: "f97968bee9674259c75b89658b09f93c",
_rev: "3-4e2cce33e562ae502d6416e0796fcad1",
id: "30000002",
DateHeure: "2016-06-16T02:08:00Z",
Latitude: 1000,
Longitude: 1000,
Gyro_x: -242,
Gyro_y: 183,
Gyro_z: -156,
Accel_x: -404,
Accel_y: -2424,
Accel_z: -14588
}
}
]
}
Так он работает на идентификатор, но это не работает для второго ключа gyro_y.
Благодарим за помощь.
Но тогда это значение ** id **, которое игнорируется. – HJerem
Если вам нужен чистый 'OR' с диапазонами, которые вы получаете в SQL, вы не сможете выполнить его с помощью единственного сокращения карты. Если мое предложение не работает, вам может потребоваться использовать 2 представления, а затем вычислить пересечение в вашем приложении. –