使用 Mongoose 进行动态查询

Posted

技术标签:

【中文标题】使用 Mongoose 进行动态查询【英文标题】:Make dynamic query with Mongoose 【发布时间】:2014-06-28 05:28:06 【问题描述】:

我正在尝试使用 Mongoose 制作动态条件,但它并没有像我想象的那样工作。

代码是这样的

id = req.params.questionId;
index = req.params.index;

callback = function(err,value)
   if(err)

       res.send(err)

   else

       res.send(value)

    
;

conditions = 
    "_id": id,
    "array._id": filterId
;
updates = 
   $push: 
      "array.$.array2."+index+".answeredBy": userId
   
;
options = 
  upsert: true
;

Model.update(conditions, updates, options, callback);

如您所见,我正在尝试使用“索引”变量创建动态条件。这样可以吗?

提前谢谢你!

【问题讨论】:

【参考方案1】:

您需要分两步创建updates 对象:

var updates =  $push:  ;
updates.$push["array.$.array2." + index + ".answeredBy"] = userId;

更新

现在 node.js 4+ 支持computed property names,你可以一步完成:

var updates =  $push: 
    ["array.$.array2." + index + ".answeredBy"]: userId
 ;

【讨论】:

或使用 Object.create 你救了我的命。谢谢!

以上是关于使用 Mongoose 进行动态查询的主要内容,如果未能解决你的问题,请参考以下文章

如何动态构建具有 objectId 的 mongoose 查询?

如何动态构建具有 objectId 的 mongoose 查询?

Mongoose:如何向模式添加动态索引?

如何动态更改 Mongoose 提供程序中的集合或数据库的名称,Nestjs?

如何对视图使用存储过程进行动态查询?

mybatis深入之动态查询和连接池介绍