使用Node-Red更新MonogoDB中的记录

时间:2017-04-18 16:02:22

标签: mongodb node-red

我是Node-Red和MongoDB的新手。

我需要使用Node-Red更新集合中的文档。

这是我在函数节点中的代码:

var newMsg = msg;
newMsg.operation  = 'findAndModify';
newMsg.payload    = {
                      query: { "UserKey": "mykey" }, 
                      update: { $set: {"Locked": false } }
                    };
return newMsg;

但得到以下错误

" Monog错误:需要删除或更新"。

编辑:

虽然以下代码在Mongo shell中运行良好。

db.Users.findAndModify({
                        query: { "UserKey": "mykey" },
                        update: { $set: { "Locked": false } }
                       })    

由于

2 个答案:

答案 0 :(得分:0)

findAndModify不是mongo节点支持的方法之一,您必须将其作为2阶段进程。

使用 Mongo In 节点执行find,然后更新有效负载并将其反馈到 Mongo Out 节点以执行store

答案 1 :(得分:0)

@ phani-indra,例如,如果您有一个具有文档的用户集合:

{ "chatid" : 324323,
  "alert" : false, 
  "accesslevel" : 4, 
  "_id" : ObjectId("5d76b33c6ff21e0155d035a0") 
}

,并且您想将键“ alert”更改为true,因此NodeRED中的功能节点将类似于:

var newMsg = { 
  'collection': 'users', 
  'operation': 'update',
  'query': {
    chatid : 324323
  },
  'payload': { 
      $set: {
          alert : false
      }
   } 
}; 
return newMsg;

然后将功能节点输入到 Mongo Out 节点。