Mongodb,更新时使用数据上下文

时间:2014-06-16 12:23:58

标签: node.js mongodb coffeescript meteor

我想知道在更新时使用当前数据上下文是否可能。

collection.update({_id: id},
  {$set:
    {'tmp.$.data': (function(){
      return this.a + this.b})()},
  {multi:true});

在设定操作中,我试图用IIFE函数来计算某些东西,而这个'关键词, 但是我没有按照我们的预期得到任何东西,因为IIFE范围被置于更新范围之外。 (a& b是该对象中的项目。)

这就是我想做的事。

如果我们在进行更新时可以控制某些数据,我认为操作集合非常有用。

有人对此有所了解吗?

提前致谢 -

PS。我将此问题更新为js版本。

1 个答案:

答案 0 :(得分:0)

每当我遇到@个变量的陌生感时,我只会在该闭包之外进行引用。所以从这个:

collection.update (_id: id),
  ($set:
    'tmp.$.data': do ->
      return @a + @b),
  (multi:true)

对此:

a = @a
b = @b 
collection.update( 
  _id: id
  $set:
    'tmp.$.data': do ->
      return a + b
  multi:true
)

当函数期望函数作为参数并获得其他东西时,似乎事情会变得混乱。我不确定do哈希中的tmp.$.data是否真的有必要,但我不太了解流星,不能说是或否。