Mongodb是否在引用数组中插入元素?

时间:2018-10-21 06:55:50

标签: node.js mongodb

我正在尝试插入具有书籍的User对象,同时插入书籍。我正在使用以下代码。

db.users.insertOne({
    "_id": new ObjectId(), 
    "username": "testusername",
    "books": [{"_id": new ObjectId(), "name": "Test Book"}]
})

几乎可以正常工作,只是我的书的键只是数字0或1(就像在普通数组中一样)。 但不应该是ObjectId(请参见屏幕截图)。

enter image description here

2 个答案:

答案 0 :(得分:2)

您使用的是数组,因此键为0,1,2 ... 如果要使用ObjectId作为键,则必须使用一个对象

db.users.insertOne({
    "_id": new ObjectId(), 
    "username": "testusername",
    "books": {
      [new ObjectId()]: { "name": "Test Book" }
    }
})

但是书籍不再像数组那样工作,您不能使用数组的任何方法。我建议您继续使用books数组。

答案 1 :(得分:0)

您为什么要手动进行ObjectIds? MongoDB会为您做到这一点……只是:

db.users.insertOne({
    "username": "testusername",
    "books": [{"name": "Test Book"}]
})