Прежде всего, я ОЧЕНЬ новичок в Mongodb, поэтому, пожалуйста, потерпите меня. У меня есть коллекция mongodb, которая имеет данные, как показано ниже (в представлении массива PHP):
Array
(
[_id] => MongoId Object
(
[$id] => 8974439e66777114648b47dc
)
[mechFamily] => X07_B22
[mechName] => X07_B22_61
[mechType] => Original
[spans] => Array
(
[noOfSpans] => 5
[span] => Array
(
[0] => Array
(
[type] => solid
[clipShape] => rectangle
[id] => 2d8c1d2a6756323beca8e6e59823e3b
Мое требование заключается в том, что мне нужно передать условие find()
который даст мне только те записи, где noOfSpans
это 10.
Я старался:
$myCollection->find(array("spans.noOfSpans" => 10));
Но это ничего не возвращает, я посмотрел на разделы запросов в документах, а также на SO, но ответы довольно запутанные. Может кто-нибудь сказать мне, как запросить эту структуру mongodb?
Я не очень хорошо разбираюсь в синтаксисе PHP, поэтому я собираюсь перевести ваш документ в синтаксис оболочки монго, а затем предложить запрос. Дайте мне знать, если я сделал это неправильно, и я постараюсь исправить это.
{
"_id" : "8974439e66777114648b47dc",
"mechFamily" : "X07_B22",
"mechName" : "X07_B22_61",
"mechType" : "Original",
"spans" : {
"noOfSpans" : 5,
"span" : [
{
"type" : "solid",
"clipShape" : "rectangle",
"id" : "2d8c1d2a6756323beca8e6e59823e3b"}
]
}
}
Запрос на сопоставление документов, где spans.noOfSpans
это 10
db.collection.find({ "spans.noOfSpans" : 10 })
похоже, что ваш PHP-запрос не работает. Неверная структура моего документа? Что вы имеете в виду, когда говорите find
ничего не возвращает? Он возвращает курсор без результатов? Как вы проверяете?
Других решений пока нет …