Мы храним документы с неопределенной структурой.Я имею в виду, что он имеет базовую структуру (id
, user
и creationTimestamp
), но есть также поля Map<String, Object> values
, в которых мы можем хранить любую структуру:
public class Metadata {
private String id;
private String user;
private Date creationTimestamp;
private Map<String, Object> values;
}
Пример:
> db.metadata.find();
{
"_id" : "Doc2Ref2Mdt1",
"user" : "user1",
"creationTimestamp" : ISODate("2018-09-24T12:20:56.958Z"),
"values" : {
"ambit" : "ctti",
"departament" : "economia"
}
},
{
"_id" : "Doc1Ref2Mdt1",
"user" : "user2",
"creationTimestamp" : ISODate("2018-09-24T12:20:56.169Z"),
"values" : {
"date" : ISODate("2018-09-24T12:20:56.171Z"),
"number" : 16,
"address" : {
"street" : "Av. Diagonal",
"location" : "barcelona",
"credentials" : [
{
"password" : "pwd",
"login" : "main"
},
{
"password" : "pwd",
"login" : "other",
"creation" : ISODate("2018-09-24T12:20:56.171Z")
}],
"contact" : "contact name",
"tags" : ["tag1", "tag2"}]
}
}
Итак, вы можете видеть, что values
может хранить любую структуру.
Мне нужно знать, может ли mongodb автоматически проиндексировать все из них.
Я имею в виду, когда новое поле «добавляется» в values
, например, values.newfield
, оно автоматически индексируется.
Есть идеи?