Bu yeni bir potansiyel soruyu soruyor ama vahşi bir cevap bulamadım.nodejs 'cassandra-driver' IN sorgusuyla sorgu hazırlandı IN sorgu
CREATE TABLE events.by_hour (
level tinyint, /* 60 = FATAL, 10 = TRACE */
hour int, /* in YYYYMMDDHH format */
insertion_time timeuuid,
userid TEXT,
message TEXT,
PRIMARY KEY ((type,hour),userid,insertion_time))
WITH CLUSTERING ORDER BY (userid ASC, insertion_time ASC);
Ben isteğe bağlı olarak bir tarafından filtre tüm olayları getirmesi hazırlanmış bir sorgu yapmak istiyorum: Şu anda bu formun basit bir kullanıcı olay günlüğünü (bu basit tutmak için elided bazı nitelikler) inşa ediyorum
Kullanıcıya birkaç saat boyunca ideal olarak bazı seviyeler üzerinde verilir.
var cassandra = require('cassandra-driver');
var client = new cassandra.Client({contactPoints: ['127.0.0.1']});
var query
= 'SELECT * FROM events.by_hour
WHERE level IN (?) and hour IN (?) and userid = ?;';
var options = [ 10, 2016032117,'user_uuid' ];
client.execute(query, options, {
prepare: true
}, function (err, result) {
// Do stuff...
next(err);
});
Bu, tek bir saat ve seviye için çalışıyor:
Kolayca tek düzeyi ve saat sorgulayan bir sorgu oluşturabilirsiniz. Yukarıdaki sorguda birden fazla saat ve seviye belirtmek isterim ancak kodla oynamak, dizeyi bir dize olarak veya değer dizisi olarak belirterek çalışmayı başaramam.
ben böyle bir şey yapmak zorunda düşünüyorum:
ihtiyaç vardır düzeyleri ve saat sayısı dayalı sorgu oluşturun:
// for 1 level and 2 hours:
query = 'SELECT * FROM events.by_hour
WHERE level IN (?) and hour IN (?,?) and userid = ?;';
options = [ 10, 2016032117,2016032118,'user_uuid' ];
client.execute(query, options, {
prepare: true
}, function (err, result) {
// Do stuff...
next(err);
});
// for 2 levels and 2 hours:
query = 'SELECT * FROM events.by_hour
WHERE level IN (?,?) and hour IN (?,?) and userid = ?;';
options = [ 10, 20, 2016032117,2016032118,'user_uuid' ];
client.execute(query, options, {
prepare: true
}, function (err, result) {
// Do stuff...
next(err);
});
Bunu sevmiyorum. AMA 'Hazırlanmış gerçekleri geçebildiğimiz için hala hazırladığımız soruların faydalarını bile bulabilirim. Daha iyi bir yol olmalı gibi hissettiriyor ... ama yapmaya çalıştığım şey, tek bir hazır sorguda bile mümkün değil.
Burada herhangi bir bilgelik isteyen var mı?
Teşekkürler!
Eh ben darned olacağım. Teşekkür ederim! Bu harika çalıştı ve her şey yine dünyada haklı. İzleyen herkes için bir not - Bu parametrelerden geçmek için harita notasyonunu kullanarak çalışmak için bunu alamadım. yani, @jorgebg, yukarıda belirtilen paragraflarda verilen paragraflar = {level: [10,20,30], saat: [2016032117], 'user_uuid'} 'işlevini yerine getiremezdi - dizilerdeki konumsal değerlerin kullanımı büyük olur. . – darrin
Benim sorgum const query = 'SELECT * FROM events.by_hour WHERE (düzey, saat) IN(); Paramimlerim ne olmalı? Teşekkürler. – B1K