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