我正在与后端的Mongodb一起开发nodejs / express应用程序。在我的一个API调用中,根据是否存在特定的querystring参数,我想使用$ gt或$ lt向Mongodb发出查询。
在某些情况下,我们想要的所有内容都比tokenId使用$ lt少,但在其他情况下,我们希望所有的内容都比tokenId使用$ lt大。我们如何做到这一点而不重复查询?
tokenId
这是一个示例查询:
collection.find({'film_id': {$in : genre}, '_id': {$lt: tokenId}}).sort({'_id': -1}).limit(25).toArray(function(error, films)
有没有一种方法可以动态创建查询而无需实际执行2个不同的查询?
以编程方式建立查询对象:
var query = {'film_id': {$in : genre}}; if (param) { query._id = {$lt: tokenId}; } else { query._id = {$gt: tokenId}; } collection.find(query).sort({'_id': -1}).limit(25).toArray(function(error, films);
更新资料
现在,Node.js 4+支持计算的属性名称,您可以query一步创建:
query
var query = { film_id: {$in: genre}, _id: {[param ? '$lt' : '$gt']: tokenId} };