2015-02-25 6 views
0

Я хотел бы запросить все документы в моей коллекции, где поле client - пустая строка. Я видел множество примеров того, как проверить, что что-то не пустая строка, но я не могу найти примеров того, как делать обратное. Я пробовал db.collection.find({client: ""}), но я возвращаю пустой набор.Как запросить пустую строку в PHP Mongo?

EDIT: Пример ввода в коллекции выглядит

{ "_id" : ObjectId("54eb59699e12a795078b80da"), "reportID" : "1472031", "orgID" : "336", "client" : "", "customerID" : NumberLong(1), "address" : "123 main st", "city" : "Grove City", "state" : "OH", "zip" : "43123", "county" : "Franklin", "gpsLatitude" : null, "gpsLongitude" : null, "dateDue" : ISODate("2012-08-18T00:00:00Z"), "dateDueClient" : ISODate("2012-08-18T00:00:00Z"), "dateComplete" : ISODate("2012-08-18T00:00:00Z"), "dateCompleteEstimate" : NumberLong(0), "contractorSubmissionDate" : ISODate("2012-08-19T00:26:23Z"), "createdOn" : ISODate("2012-08-19T00:21:37Z"), "assignedToContractorOn" : ISODate("2012-08-19T00:21:37Z"), "workTypeID" : "6338", "assignedAdmin" : "7880", "contractorID" : "7880", "categoryID" : "0", "historyLength" : NumberLong(0), "invoiceDate" : ISODate("2012-08-18T00:00:00Z"), "submittedToClient" : ISODate("2012-08-18T00:00:00Z"), "paymentContractor" : NumberLong(0), "paymentClient" : NumberLong(0), "contractorIsPaid" : NumberLong(0), "clientIsPaid" : NumberLong(0), "sentinel" : NumberLong(1), "isFrozen" : NumberLong(0), "numTimesClientReady" : "1", "pcrResponses" : [ ] } 

Там очень много полей, но клиент один довольно близко к началу.

+0

Это должно работать нормально. Можете ли вы показать нам образец документа, который вы хотите совместить, но не совпадают? – wdberkeley

+0

Это синтаксическая ошибка, поэтому формат документа не должен иметь значения в отношении ошибки синтаксиса. –

+0

Вы сказали, что это пустой результат, а не синтаксическая ошибка в исходном вопросе. Если это синтаксическая ошибка, отправьте код и ошибку. Запрос на '{" client ":" "}' отлично работает с этим документом. Однако в синтаксисе оболочки манго. Это PHP-код, который не работает? Можете ли вы показать нам код PHP? – wdberkeley

ответ

0

Запрошенный вами запрос должен работать. Просто чтобы проверить, я вставлял эти данные в ряд в тестовую коллекцию и возвращался обратно с db.test.find({client: ''})

Я думаю, что у вас может быть проблема в другом месте. Я один или два раза попадал в неправильную базу данных при запуске запросов или имел опечатку в имени коллекции. Для того, чтобы проверить, что выглядит мои данные, как, я часто раз:

> db.tset.find({client: ''}); 
[] // What? No results? ...backspacebackspacebackspace 

> db.tset.find(); 
[] // What? No results at all for no query? I must be in the.. OH! 

> db.test.find(); 
[] // What? I thought I had a typo in my collection name. What database am I in? 

> db 
tseting // OH! I keep making that typo.. 

> use testing 
switched to db testing 

> db.test.find({client: ''}); 
[] // What? Still no results? This is weird... 

> db.test.insert({client: ''}); 

> db.test.find({client: ''}); 
{ "_id" : ObjectId("54f1b5e5d05052fce4fb6684"), "client" : "" } 
// Hmm, ok, so there's nothing wrong with the query. The data came up 
// So I'm still just in the wrong place? Really? 
// Maybe I woke up on the wrong side of the bed today. I should eat lunch. 

Иногда туннельное зрение заставляет вас думать, что проблема лежит где-то, что это не так. Оставьте комментарий, если это или не полезно, возможно, мы придумаем еще несколько идей по устранению неполадок.

+0

Это не связано с неправильной коллекцией или опечатками, но я думаю, что, может быть, моя документация о том, какие пустые записи выглядят неправильно, неверна. Я не думаю, что это пустая строка. –

+0

Возможно, выполните команду 'var x = db.collection.findOne ({_ id: ObjectId (" 54eb59699e12a795078b80da ")});' и затем 'typeof x.client', посмотрите, что он возвращает? –

Смежные вопросы