Dies ... ist eine Änderung in MongoDB 2.6.0, das bson
-Objekt in der $in
-Klausel nicht mehr akzeptiert.
Dieses spezielle Problem ist ein Tracker als ein PHP-Treiber-Bug bei Ссылка
Der MongoDB-PHP-Treiber wird ein PHP-Array in BSON-Array serialisieren (akzeptiert vom $ in-Operator), wenn das PHP-Array: Sequentiell numerisch indiziert ist, beginnend mit 0
Das bedeutet, wenn Sie ein Array haben wie:
%Vor%und dann du
%Vor%Sie beenden tatsächlich mit:
%Vor%Was nicht mit Index 0 beginnt. Der MongoDB PHP-Treiber konvertiert das daher in ein BSON-Objekt ... Führt zu Validierungsfehler in MongoDB, wie es ein Array erwartet.
Da der MongoDB-PHP-Treiber Ihre MongoDB-Abfrage nicht analysiert, können wir nicht wissen, welches Array von dieser Serialisierungsregel ausgenommen werden sollte.
Die Problemumgehung besteht, wie oben erwähnt, darin sicherzustellen, dass Ihre PHP-Arrays numerisch indiziert werden, beginnend bei 0. Am einfachsten können Sie dazu
ausführen %Vor%Nach dem Debuggen mit Mongo habe ich Folgendes bemerkt:
... Abfrage: {_id: {$ in: {0: Objekt-ID ('52214d60012f8aab278eaad1') ...
aber es sollte
sein... Abfrage: {_id: {$ in: [Objekt-ID ('52214d60012f8aab278eaad1') ...
Ich würde vorschlagen, array_values ($ VAR) vor dem Aufruf von $ in zu benutzen. Ich nehme an, Mongo 2.4.9 ist milder gegenüber der Tatsache, dass $ id entweder ein Objekt oder ein Array sein kann mongo 2.6;)
Tags und Links php mongodb mongodb-php