首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB,Monk,findAndModify不上身

MongoDB,Monk,findAndModify不上身
EN

Stack Overflow用户
提问于 2015-07-17 16:35:34
回答 4查看 2.1K关注 0票数 0

我在一个节点项目中有这个函数,它应该根据段塞是否匹配来更新或创建一个新条目。它非常完美地更新,所以返回的响应是正确的,但是它不会插入一个新项,我也不知道我错过了什么。

MongoDB 3.0.4版(通过自制安装) Mac MongoDB Node软件包2.0.39 Monk1.0.1

代码语言:javascript
复制
collection.findAndModify({
      "query": { "slug": pluginslug },
      "update":
        {
            "slug"            : pluginslug,
            "name"            : response.data.name,
            "current_version" : response.data.version,
            "description"     : response.data.short_description,
            "change_log"      : response.data.sections.changelog,
            "updated"         : response.data.last_updated,
            "tested"          : response.data.tested
        },
      "upsert" :true,
      "new" : true
      }, function (err, doc) {
        if (err) {
          res.send("There was a problem adding the information to the database.");
        }
        else {
          console.log(doc)
          res.redirect("plugins/new");
        }
    });

我是不是漏掉了一些很明显的东西?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-11-06 08:57:07

我在这里找到了正确的答案:一个简单的mongo/mongo findAndModify查询的问题

解决方案是将这些选项作为自己的对象提供(和尚文档没有很好地记录这些选项):

代码语言:javascript
复制
db.test.findAndModify(
{
  "query": { "slug": "1234512345" },
  "update":
    {
        "$set": 
        {
            "slug"            : "1234512345",
            "name"            : "response.data.name",
            "current_version" : "response.data.version",
            "description"     : "response.data.short_description",
            "change_log"      : "response.data.sections.changelog",
            "updated"         : "response.data.last_updated",
            "tested"          : "response.data.teste"
        }
    }
},
{
  "upsert" :true,
  "new" : true
}, 
function (err, doc) {
    if (err) {
        console.log(err);
    }
    else {
      console.log(doc);
    }
});
票数 2
EN

Stack Overflow用户

发布于 2015-07-17 16:37:19

试试这个:

代码语言:javascript
复制
collection.findAndModify({
      "query": { "slug": pluginslug },
      "update":
        {
          $set:{
            "slug"            : pluginslug,
            "name"            : response.data.name,
            "current_version" : response.data.version,
            "description"     : response.data.short_description,
            "change_log"      : response.data.sections.changelog,
            "updated"         : response.data.last_updated,
            "tested"          : response.data.tested
           } 
       },
      "upsert" :true,
      "new" : true
      }, function (err, doc) {
        if (err) {
          res.send("There was a problem adding the information to the database.");
        }
        else {
          console.log(doc)
          res.redirect("plugins/new");
        }
    });

请试着运行以下代码:

代码语言:javascript
复制
"use strict";
var mongojs = require("mongojs");

var collections = ["test"];

var db = mongojs('test', collections);

db.on('error', console.error.bind(console, 'connection error:'));

db.test.findAndModify({
      "query": { "slug": "1234512345" },
      "update":
        {
            "slug"            : "1234512345",
            "name"            : "response.data.name",
            "current_version" : "response.data.version",
            "description"     : "response.data.short_description",
            "change_log"      : "response.data.sections.changelog",
            "updated"         : "response.data.last_updated",
            "tested"          : "response.data.teste"
        },
      "upsert" :true,
      "new" : true
      }, function (err, doc) {
        if (err) {
            console.log(err);
        }
        else {
          console.log(doc);
        }
    });
票数 1
EN

Stack Overflow用户

发布于 2016-08-25 00:15:51

这个答案可能太迟了,但我只是偶然发现了这个问题,并且遇到了一个类似的问题,下面是对我有用的问题:

代码语言:javascript
复制
collection.findAndModify(
  { "slug": pluginslug }
  ,[]
  ,{
      $set:{
        "slug"            : pluginslug,
        "name"            : response.data.name,
        "current_version" : response.data.version,
        "description"     : response.data.short_description,
        "change_log"      : response.data.sections.changelog,
        "updated"         : response.data.last_updated,
        "tested"          : response.data.tested
       } 
   }
  ,{"upsert" :true,"new" : true}
  , function (err, doc) {
    //..something here... 
   });

findAndModify方法文档这里应该会有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31480613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档