【发布时间】:2016-01-28 00:21:25
【问题描述】:
mongodb 2.1.4(节点驱动)
我目前正在尝试为插入到数组中的每条消息创建一个新的 ObjectID(该数组是一个子文档)。
我认为这样 - 可以轻松地对数组中的每条消息执行所有 CRUD 操作。
例如:
“线程”集合(注意 - 每条消息都有一个 ObjectId)
{
"_id": ObjectId("1234132413424123"), //A thread id
messages:[
{
_id :ObjectId("134124412341234"),// A message id
"message":"MongoDB is my friend"
},
{
_id :ObjectId("534124412342377"),
"message":"MongoDB is my friend too"
},
...
]
},
{
"_id": ObjectId("22341324134224234"),
messages:[
{
_id :ObjectId("8341244123411235"),
"message":"Something clever"
},
{
_id :ObjectId("134124412342376"),
"message":"blah blah blah"
},
...
]
}
我现在在做什么:
var query = {};
query["_id"] = new ObjectID(threadID);
var update = {$push: {}}; //I write the update object externally just for aesthetics
update.$push["messages"] = newMessage;
var threadsCollection = db.collection('threads');
threadsCollection.findOneAndUpdate(query,update, function (err, result) {
if (err) {
console.log(err);
}
db.close();
});
问题:
与集合的“插入”不同,使用 $push 的更新不会创建 添加到数组中的每条消息的新 ObjectId。
问题:
是否有在 $push into 期间创建 ObjectID 的标准方法 子数组?还是我们应该手动创建一个 ObjectID 并事先将其添加到孩子?
【问题讨论】:
-
查看更好的方法baeldung.com/spring-boot-mongodb-auto-generated-field。您也可以为子对象使用序列生成器
标签: mongodb