Имейте в виду проблему MongoDB здесь, когда я пытаюсь найти набор совпадений идентификаторов коллекции. Как Im строительный вид древовидной структуры на основе MongoDB. У меня есть объекты, которые содержат несколько атрибутов, таких как имя, родители и дети, чтобы они знали, что существуют отношения. Прямо сейчас я могу и объект идти, хотя его идентификатор ребенка и загружать каждый объект по одному. Я как-то заметил, что он намного быстрее получил их как коллекцию.C# Найти строку в списке <string> в MongoDB
Итак, теперь мой вопрос: как найти идентификатор intrest в коллекции на узлах дерева, представленных в MongoDB.
пример того, как документ MongoDB может выглядеть
{
"_id" : ObjectId("523de6c6d7b47f1f74c98ba2"),
"IDType" : "root",
"Name" : "test root",
"Relations" : [{
"Children" : {
"ChildrenList" : ["523de725d7b47f1d0c8242f1", "523de746d7b47f1d0c8242f5"]
},
"Parents" : {
"ParentList" : []
}
}]
}
Итак, как я нашел бы один из идентификаторов путем сопоставления с помощью ID в ChildrenList
? это как Relations
представляет собой массив Children and Parents
. и эти два содержат массив идентификаторов, которые должны быть сопоставлены.
попробовал это без излишеств.
IMongoQuery searchQuery = Query.ElemMatch("Children", Query.EQ("ChildrenList", "523de746d7b47f1d0c8242f5"));
Поле «Дети» является потомком «отношений», поэтому минимально вы должны включить это в свой запрос. '" Relations.Children "' – WiredPrairie
Я также не понимаю, почему дети и родители хранятся в массиве от отношений, а затем имеют дополнительный уровень объекта вместо сохранения непосредственно. – WiredPrairie
Это потому, что должна быть возможность иметь несколько отношений родитель-узел-ребенок для одного объекта. Не то, что я говорю, что это обычно, но, поскольку я был в сценариях, где это может быть использовано, я хотел сделать это возможным самым простым способом. В противном случае вы должны подделать его, и это может быть спокойным. –