在MongoDB集合中更新字符串值

时间:2019-03-18 23:08:05

标签: node.js string mongodb mongoose

我正在尝试更新集合中的字符串变量。我正在使用.update方法。

Public WithEvents myOlItems As Outlook.Items

Public Sub Initialize_handler()     
    Set myOlItems = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Folders("News").Items     
End Sub


Private Sub myOlItems_ItemAdd(ByVal Item As Object)      
    Item.Subject = "New subject"
    Item.BodyFormat = olFormatPlain
    Item.Recipient = Items.Recipients.Add("username@domain.com")
    Item.Forward
    Item.Send     
End Sub

运行后,该值在我的数据库中不会更改。

Invoice.update({_id: "5c8c170cc96b8835c06fb54f"}, {$set: {isPaid: "True"}});

我已经尝试过mongodb必须提供的所有更新功能,但是它们都不起作用。我在这里做什么错了?

2 个答案:

答案 0 :(得分:0)

  1. 尝试使用"isPaid"代替isPaid
  2. {new: true}将返回更新的文档

编辑:@Neil Lunn { new: true }仅是findOneAndUpdate()及其变体的有效选项


代码如下:

 Invoice.update({_id: "5c8c170cc96b8835c06fb54f"}, {$set: {"isPaid": "True"}}, {new: true}, (err, doc) => {
     if(err){
         console.log("err: " + err);
     }        
     console.log(doc);

 });

答案 1 :(得分:0)

这里有一些错误

首先是"isPaid",而不是isPaid 其次,由于您正在从_id中进行搜索,因此它不是值_id而是对象ID。 您应该使用

进行测试
Invoice.update({_id: ObjectID("5c8c170cc96b8835c06fb54f")}, {$set: {isPaid: "True"}});

但是您需要引用ObjectID(来自mongo)