当前位置: 首页 > 知识库问答 >
问题:

猫鼬:更新字段,推入数组中的对象[重复]

危宜
2023-03-14

我想在mongo数据库的数组中添加一个元素:

db.keypairs.update( {pubkey: "1234567890"}, { $push: {listTxId: {txHash: "yyy", spent: false} } } )

结果很完美:

listTxId" : [ { "txHash" : "xxx", "spent" : true },{ "txHash" : "yyy", "spent" : false } ]
var res = wait.forMethod(Keypair,'update', {pubkey: "1234567890"}, { $push: { "listTxId": {"txHash":"zzz", "spent":false} } } );
var Keypair = require('./app/models/Keypair');
var wait = require('wait.for');
{ "txHash" : "zzz", "spent" : false, "_id" : ObjectId("56561571fea5d9a10a5771fd") }

更新:猫鼬模式:

var keypairSchema = mongoose.Schema({
    userId      : { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
    pubkey      : String,
    privkeyWIF  : String, // temp
    balance     : Number,
    listTxId    : [{
        txHash : String,
        spent  : Boolean
     }],
    walletId    : { type: mongoose.Schema.Types.ObjectId, ref: 'Wallet' },
    description : { type: String, maxlength: 40 },
    comments    : String,
    isMasterKey : { type: Boolean, default: false },
    date        : Date
});

共有1个答案

相旭
2023-03-14

Mongoose将把ID放在子文档数组中。listtxid是子文档数组。您可以将_id:false添加到架构中以防止出现这种情况:

var keypairSchema = mongoose.Schema({
    userId      : { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
    pubkey      : String,
    privkeyWIF  : String, // temp
    balance     : Number,
    listTxId    : [{
        _id: false,
        txHash : String,
        spent  : Boolean
     }],
    walletId    : { type: mongoose.Schema.Types.ObjectId, ref: 'Wallet' },
    description : { type: String, maxlength: 40 },
    comments    : String,
    isMasterKey : { type: Boolean, default: false },
    date        : Date
});
 类似资料:
  • 问题内容: 有没有一种方法可以更新对象中的值? 假设我要为id = 2的项更新名称和值项; 我尝试了以下w /猫鼬: 这种方法的问题在于它会更新/设置整个对象,因此在这种情况下,我会丢失id字段。 猫鼬中是否有更好的方法来设置数组中的某些值,但不理会其他值? 我也只查询了这个人: 问题答案: 你近了 您应该在使用update运算符时使用点符号来做到这一点:

  • 是否有方法更新对象中的值? 假设我想更新id=2的项目的名称和值项目; 我尝试过以下猫鼬: 这种方法的问题在于它更新/设置了整个对象,因此在本例中,我丢失了id字段。 在mongoose中有没有更好的方法来设置数组中的某些值,而不设置其他值? 我也问过只是人:

  • 使用下面的代码,我尝试创建一个新的项模式并将其推入第一个集合对象。我使用findById函数传递要更新的集合对象的_id。找到带有我的id的集合后,我只需将一个项模式推入集合对象的items数组。我得到Res.Status(200),但我的items数组从未更新。还有人有这个问题吗?谢谢你的帮助。

  • 我需要将一个数组中的对象推入数据库,但我得到了一个错误。我做错了什么?我发现这样一个话题,通过猫鼬将物品推入mongo数组却无法正确应用.............................................................. 当我尝试这个代码时,我得到了这个答案 MongooseError:文档在保存前必须有_ID

  • 我在一个名为course的模式中有一个名为students的数我创建了一个路由,允许我使用学生的将学生添加到这个数组中,如下所示: 当我尝试用以下JSON体向我的endpoint发出PUT请求时: 谢谢!

  • 我正在与AngularJS项目工作,我有以下问题。我有个密码: form.html: 使用这段代码,someVariable不会显示,但当我将ng-model更改为someVariable.SomeField时,我试图显示它...管用!有人能解释一下为什么吗?