【问题标题】:Insert objects into object Mongodb将对象插入对象MongoDB
【发布时间】:2019-01-17 17:45:56
【问题描述】:

我正在尝试将对象插入对象(不是数组)。我该怎么做?

这是我试图实现的数据结构示例。

users:{
 '0': {
    name: 'Tom',
    age: '19',
    car: 'Mazda 3',
  },
 '1': {
    name: 'Ryan',
    age: '27',
    car: 'BMW',
  },
 '2': {
    name: 'Jake',
    age: '22',
    car: 'Audi',
  }
}

users 是文档中包含用户集合的字段。我想将新用户添加到 users 字段,当我添加它们时,用户内部的键应该相应地增加。

所以新添加的对象应该是:

'3': {
        name: 'Sam',
        age: '24',
        car: 'Honda',
      }

这是我目前正在做的:

let newUser = {
            name: 'Sam',
            age: '24',
            car: 'Honda',
          };

db.collection('Group').findOneAndUpdate({
   '_id': new ObjectId(groupId),
}, {
  '$set': {
     'users.$': newUser,
   },
}, {
   returnOriginal: false,
}
})

提前致谢。

【问题讨论】:

  • 让我快速更新问题。 users 是文档中的一个字段。我想将新的用户对象添加到 users 字段。另外,当我添加一个新的用户对象时,我希望users 中的键增加。
  • @thishandp7 我认为你应该改变你的模型。 users 不应该是一个对象,它应该是一个数组,那么你的问题就会得到解决。否则您必须先获取用户对象的长度,然后使用{length+1:{your user object}} 创建一个新对象,然后您必须将此创建的对象推送到您的用户对象中。
  • @Yogesh.Kathayat 因为你可以做复杂的事情,为什么要简单:)
  • @Yogesh.Kathayat 这就是我创建要插入文档的对象的方式。另外,我正在使用 $set 运算符。 $set 运算符将现有数据替换为新数据。它不会像 $push 那样为数组添加一个新的。是的,我同意将模型更改为使用数组。但是,不幸的是,我无法控制数据库。该数据库目前也被其他一些应用程序使用。所以改变模型对我来说不是一个选择。

标签: javascript json mongodb


【解决方案1】:
yourModel.create(req.body,function(err,result){
   console.log(result);
});

suppose your req.body will 

 {name: 'Sam',age: '24',car: 'Honda' };

第二种方式:

 user.collection.create(req.body,function(err,result){
   console.log(result);
});

suppose your req.body will 

 {name: 'Sam',age: '24',car: 'Honda' };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    相关资源
    最近更新 更多