【问题标题】:Does mongodb automatically create an index on the _id field of embedded documents?mongodb 会自动在嵌入文档的 _id 字段上创建索引吗?
【发布时间】:2017-05-31 12:09:31
【问题描述】:

在 node.js 项目上使用 mongodb 和 mongoose,我想知道我是否必须在嵌入项目的 _id 字段上确保索引?

也就是说,我看到 mongodb 自动在集合的 _id 字段上创建索引,它是否也为嵌入集合的 _id 字段做同样的事情?

{
   _id: "joe",
   name: "Joe Bookreader",
   addresses: [
                {
                  _id: "someid1",
                  street: "123 Fake Street",
                  city: "Faketon",
                  state: "MA",
                  zip: "12345"
                },
                {
                  _id: "someid2",
                  street: "1 Some Other Street",
                  city: "Boston",
                  state: "MA",
                  zip: "12345"
                }
              ]
 }

【问题讨论】:

    标签: mongodb mongoose


    【解决方案1】:

    我的直觉是没有,所以我只是尝试了一下:

    > db.foo.find()
    
    > db.foo.getIndexes()
    [
        {
            "v" : 1,
            "key" : {
                "_id" : 1
            },
            "name" : "_id_",
            "ns" : "foo.foo"
        }
    ]
    
    > db.foo.insert({
    ...    _id: "joe",
    ...    name: "Joe Bookreader",
    ...    addresses: [
    ...                 {
    ...                   _id: "someid1",
    ...                   street: "123 Fake Street",
    ...                   city: "Faketon",
    ...                   state: "MA",
    ...                   zip: "12345"
    ...                 },
    ...                 {
    ...                   _id: "someid2",
    ...                   street: "1 Some Other Street",
    ...                   city: "Boston",
    ...                   state: "MA",
    ...                   zip: "12345"
    ...                 }
    ...               ]
    ...  })
    WriteResult({ "nInserted" : 1 })
    
    > db.foo.getIndexes()
    [
        {
            "v" : 1,
            "key" : {
                "_id" : 1
            },
            "name" : "_id_",
            "ns" : "foo.foo"
        }
    ]
    >
    

    看起来没有,它不会自动在子文档上创建索引。

    【讨论】:

      【解决方案2】:

      来自 MongoDB 文档:

      By default, MongoDB creates a unique index on the _id field during the creation of a collection.
      
      【解决方案3】:

      是的,根据文档 mongo dB 会在 _id 字段上创建一个唯一索引。 Default _id Index

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-18
        • 1970-01-01
        • 1970-01-01
        • 2012-06-15
        • 2012-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多