我有以下结构的文件:
exampleDoc: {
_id: 1,
type: 'payments',
date: '06-01-2015',
userId: 2,
categoryId: 3,
amount: 20.49
}
我想执行以下查询:
SELECT * FROM payments
WHERE userId IN (1,2,3)
AND categoryId IN (4, 5, 6, 8)
ORDER BY date;
如何在NoSQL(CouchDB)中执行此操作?
提前谢谢!
答案 0 :(得分:1)
您想要创建一个在[userId, categoryId]
上编制索引的设计文档:
// check out pouchdb-upsert plugin for putIfNotExists
db.putIfNotExists({
_id: '_design/my_index',
views: {
my_index: {
map: function (doc) {
emit([doc.userId, doc.categoryId]);
}.toString()
}
}
});
然后针对您要获取的所有keys
对进行[userId, categoryId]
查询:
db.query('my_index', {
include_docs: true,
keys: [
[1, 4],
[2, 4],
[3, 4],
[1, 5],
[2, 5],
[3, 5],
// etc.
]
});
顺便说一下,pouchdb-find插件完成后会更简单,您可以使用$in
运算符和$and
运算符。 :)