node.js mongodb update /db.open()问题

时间:2012-08-27 11:56:23

标签: node.js mongodb native

我正在使用node.js mongodo本机库。

这是不起作用的代码段。 db.open调用失败,没有错误。不会打印db.open调用中的console.log语句,也不会更新db值。令人沮丧的错误。不知道如何解决这个问题。任何帮助将不胜感激。

function updateFriend(friendId, loc) {
        var input = JSON.parse(JSON.stringify("{FRIENDS.PHONE_NUMBER :" + friendId + "}"));
        db.open(function(error, client) {
          console.log("##########################" );
          console.log("######INPUT :::: " + JSON.stringify(input));
          if(error) throw error;
          var collection = new mongodb.Collection(client, 'test_collection');
          collection.update(input, {"$set":{"FRIENDS.$.LOC":"12.32, 88.33"}}, {safe:true}, function(err) {
            db.close();
          });
        });
}

这是我正在尝试更新的mongo集合:

{ "FRIENDS" : [ { "PHONE_NUMBER" : "1476516777", "LOC" : "", "NAME" : "A2" } ], "OCCASION" : "cafe", "MYLOCATION" : "13.0390433,77.554942", "MYID" : "695913809", "_id" : ObjectId("503b4e41f1d9b7913d000001") }

编辑:使用此命令进行手动数据库更新可以正常工作。

db.test_collection.update({"FRIENDS.PHONE_NUMBER":"1599181298"},{$set:{"FRIENDS.$.LOC":"13,14"}},false,true);

1 个答案:

答案 0 :(得分:0)

两件事

  1. 不要为每个请求打开新的数据库连接,在应用程序中打开一次,并在整个应用程序中重复使用相同的数据库实例。如果您需要访问其他数据库,请执行以下操作

    var db1 = db.db('someotherdb')
    
  2. 不要创建集合对象,请使用db.collection方法。集合对象并不意味着要创建,如果可能的话,它将是私有构造函数。执行以下操作。

    var collection = db.collection('mycollection')
    
  3. 驱动程序的文档在这里

    http://mongodb.github.com/node-mongodb-native/

    祝你好运