Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 在子文档中创建索引_Mongodb - Fatal编程技术网

Mongodb 在子文档中创建索引

Mongodb 在子文档中创建索引,mongodb,Mongodb,我在mongoDB中有一个文档,类似于: { "_id":"jery", "pets":{ "rabbit":{ "name":"momo", "age":2 }, "dog":{ "name":"lizy", "age":2 } } } 此文档结构很容易更新/升级,但很难分析。问题是我应该如何在字段“name”

我在mongoDB中有一个文档,类似于:

{
    "_id":"jery",
    "pets":{
        "rabbit":{
            "name":"momo",
            "age":2
        },
        "dog":{
            "name":"lizy",
            "age":2
        }
    }
}

此文档结构很容易更新/升级,但很难分析。问题是我应该如何在字段
“name”

上创建唯一索引。为此,您需要执行以下操作:-

db.collection.createIndex( {
   "pets.rabbit.name": 1,       
   "pets.dog.name": 1
} )

为此,您需要执行以下操作:-

db.collection.createIndex( {
   "pets.rabbit.name": 1,       
   "pets.dog.name": 1
} )

更改文档结构,如下所示:-

{"_id":"jery","pets":[{"type":"rabbit","name":"momo","age":2},{"type":"dog","name":"lizy","age":2}]}

这样就很容易查询了。

更改您的文档结构,如下所示:-

{"_id":"jery","pets":[{"type":"rabbit","name":"momo","age":2},{"type":"dog","name":"lizy","age":2}]}

那就很容易查询了。

你试过什么吗?你能展示你的努力吗?是的,我能。我找不到任何办法来处理这个问题。如果子文档在一个数组中,那么我可以为它创建一个唯一的索引。但是数据结构不是数组。我在mongoDB 3.2文档中搜索解决方案。我想我可以尝试使用$text来查找我在任何文档中是否有相同的“名称”。但是“文本索引”只是为类型为“string”的字段创建的,让我来确定您的具体要求是什么。如果一条记录中有一个
名称
,则该名称不应出现在任何其他记录中,而与宠物无关。这就是你想做的?对!这绝对是我需要的。有什么解决办法吗?你不能为你的要求做唯一的索引。你试过什么吗?你能展示你的努力吗?是的,我能。我找不到任何办法来处理这个问题。如果子文档在一个数组中,那么我可以为它创建一个唯一的索引。但是数据结构不是数组。我在mongoDB 3.2文档中搜索解决方案。我想我可能会尝试使用$text来查找如果我的区域在任何文件中都有相同的“名称”。但是“文本索引”只是为类型为“string”的字段创建的,让我来确定您的具体要求是什么。如果一条记录中有一个
名称
,则该名称不应出现在任何其他记录中,而与宠物无关。这就是你想做的?对!这绝对是我所需要的。有什么解决方案吗?你不能为你的要求做唯一的索引。但兔子和狗是动态插入字段。也就是说,我不知道我在这个集合中已经有了什么,比如兔子、狗或任何其他宠物。当我插入具有相同“名称”的宠物时,无论什么宠物的名称带有“名称”,都会发生冲突。是否有语法来实现db.collection.find({“pet.$.name”:“lizy”})。Count()但是兔子和狗是动态插入字段的。也就是说,我不知道我在这个集合中已经有了什么,比如兔子、狗或任何其他宠物。当我插入具有相同“名称”的宠物时,无论什么宠物的名称带有“名称”,都会发生冲突。是否有语法来实现db.collection.find({“pet.$.name”:“lizy”})。Count()