【问题标题】:Passing multiple parameters into MongoDB query method将多个参数传递给 MongoDB 查询方法
【发布时间】:2019-08-22 19:58:55
【问题描述】:

如何在 mongodb 中传递多个参数

我目前的设置是这样的:

const query = (...query) => {

let newQuery = query // this is an array
    Model.findByIdAndUpdate(newQuery) // nothing happen coz the value is array 
}

query(id, {name:'json bourne'})

我想传递查询中的所有参数。谢谢

原来的查询是这样的 Model.findByIdAndUpdate(id, { name: 'jason bourne' })

就是这样传递参数

let newQuery = id, { name: 'jason bourne'}// this will not work also it on get the first item which is id

Model.findByIdAndUpdate(newQuery)

【问题讨论】:

  • 为什么不只是{ id, name: 'json bourne'} ?
  • 这不能作为 id 工作,并且 name 是一个单独的对象,请参阅mongoosejs.com/docs/api.html#model_Model.findByIdAndUpdate
  • 您的问题不言自明,请解释清楚,以便我们为您提供帮助
  • 这里是原查询Model.findByIdAndUpdate(id, { name: 'jason bourne' })
  • 那么告诉我你到底想用这个做什么

标签: javascript mongodb mongoose mongodb-query


【解决方案1】:

你破坏数组以获得你想要的东西

const query = (...query) => {

let [id, update, options = {}] = query // this is an array
Model.findByIdAndUpdate(id, update, options) // nothing happen coz the value is array

}

但在这种情况下,它将等价于

const query = (id, update, options = {}) => {
Model.findByIdAndUpdate(id, update, options) // nothing happen coz the value is array
}

这又等同于

const query = Model.findByIdAndUpdate;

【讨论】:

  • 谢谢。如果您知道以及您通过了多少,这将起作用。如果你的参数不止两三个怎么办。
  • 好吧,Model.findByIdAndUpdate() 需要 3 个参数,你必须至少传递其中两个。这就是为什么在我的代码中,我将第三个参数恢复为默认 {}
  • 我目前所做的是这个
【解决方案2】:

Model.findByIdAndUpdate 至少需要 2 个参数。首先是id 本身,它是查找要更新的文档所必需的。第二个参数是options,它是一个对象,其中包含您要在该文档中更新的字段的密钥对值。这里的键将是需要更新的字段,其值将是您希望该字段具有的值。您可以拥有任意数量的密钥对,只要它们以逗号分隔即可。

【讨论】:

    【解决方案3】:

    你可以展开数组:

     Model.findByIdAndUpdate(...newQuery)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-24
      • 2020-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多