Мой наивный подход состоял бы в том, чтобы зацикливать все коллекции и закодировать все документы и проверить условие. Любой более простой/более эффективный способ?
Ну, без модели данных, на которую трудно ответить, но ссылка может иметь индекс, не так ли? Я имею в виду, вы знаете, какое поле является ссылкой? Например,
Users (parent) {
Id : ObjectId("123"),
...
}
Comments {
Id : ObjectId("abc"),
UserId : ObjectId("123"),
...
}
Questions {
Id : ObjectId("efc"),
UserId : ObjectId("123"),
...
}
Тогда, зная, что UserId
является ссылкой, вы можете позвонить db.Comments.find({ UserId : ObjectId("123") })
и найти все ссылки. Таким образом, вам не нужно проходить через все документы. Единственное, что вам нужно - это справочная таблица collection name -> name of the reference field
Я бы не использовал какую-либо схему на стороне сервера, поэтому что-то, что предполагало бы самую общую situtation –
', но ссылка могла иметь индекс, правый' .. да, я думаю. но тогда нужны какие-то схемы. –
Это должно быть хорошо в домене приложения. В противном случае проблема заключается в том, что вы никогда не узнаете, что представляет собой ссылку, а что нет, но вы, безусловно, можете все время прокручивать все данные и полагаться на уникальность ключей. Но это звучит довольно уродливо. – mnemosyn