Ich habe für eine Lösung, da nur wenige Stunden ohne Erfolg gesucht ...Mehrbereichstasten in couchdb Ansichten
ich diese Anfrage in couchdb mit Blick gerade tun will:
select * from database where (id >= 3000000 AND id <= 3999999) AND gyro_y >= 1000
I dies versucht:
function(doc) {
if(doc.id && doc.Gyro_y){
emit([doc.id,doc.Gyro_y], null);
}
}
Hier ist mein Dokument (Rekord in 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
}
ich eine HTTP-Anforderung dann tun wie so:
http://localhost:5984/arduino/_design/filter/_view/bygyroy?startkey=["3000000",1000]&endkey=["3999999",9999999]&include_docs=true
ich dies als eine Antwort:
{
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
}
}
]
}
es funktioniert für die id So aber es funktioniert nicht für den zweiten Schlüssel gyro_y.
Danke für Ihre Hilfe.
Aber dann ist es die ** ID ** Wert, der ignoriert wird. – HJerem
Wenn Sie ein reines 'OR' mit Bereichen benötigen, wie Sie sie in SQL erhalten, können Sie dies nicht mit einem einzigen Map-Reduce erreichen. Wenn mein Vorschlag nicht funktioniert, müssen Sie möglicherweise zwei Ansichten verwenden und dann die Schnittmenge in Ihrer Anwendung berechnen. –