一尘不染

MongoDB和Node.js中的动态查询

node.js

我正在与后端的Mongodb一起开发nodejs /
express应用程序。在我的一个API调用中,根据是否存在特定的querystring参数,我想使用$ gt或$ lt向Mongodb发出查询。

在某些情况下,我们想要的所有内容都比tokenId使用$ lt少,但在其他情况下,我们希望所有的内容都比tokenId使用$
lt大。我们如何做到这一点而不重复查询?

这是一个示例查询:

collection.find({'film_id': {$in : genre}, '_id': {$lt: tokenId}}).sort({'_id': -1}).limit(25).toArray(function(error, films)

有没有一种方法可以动态创建查询而无需实际执行2个不同的查询?


阅读 342

收藏
2020-07-07

共1个答案

一尘不染

以编程方式建立查询对象:

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一步创建:

var query = {
    film_id: {$in: genre},
    _id: {[param ? '$lt' : '$gt']: tokenId}
};
2020-07-07