Pracuję nad aplikacją meteorytów z pakietem meteorytów. Chcę zmienić pozycję elementu w tablicy dokumentów mongo. Aby to osiągnąć, I $pull
go z tablicy, a następnie $push
go w określonej pozycji index
zgodnie z mongoDB documentation.
MyCollection.update({_id: my_doc.id},
{
$push:
{
my_array:
{
$each:[my_item.id],
$position:index
}
}
}
)
Meteor/Mongo wyrzuca następujący błąd:
update failed: MongoError: Can't canonicalize query: BadValue unknown top level operator: $each
raz pierwszy wdrożone tej stronie klienta. Zakładałem, że to nie działa ze względu na ograniczenia minimongo.
Napisałem metodę obsługi tej strony serwera, ale kończę z tym samym błędem.
Co jest nie tak z tym żądaniem, czy meteor może obsługiwać operatora $?
EDIT: Próbowałem wstawić go bezpośrednio w robomongo, i to działało. Wersja Mongo, podczas wpisywania db.version()
powraca 2.6.7
* EDIT2: Nie spodziewałem się tak nie sprawdzałem wcześniej: działa aktualizacja, zarówno z $pull
i $push
. Jednak nawet jeśli dane są rzeczywiście aktualizowane, nadal pojawia się błąd.
* EDIT: Oto przykład dane:
{
"_id" : "oSNrpgAAu8BuznvD6",
"name" : "tynhjderjye",
"description" : "",
"notes" : "",
"display_notes" : false,
"keywords" : [
""
],
"owner" : "mA5Y7LBCoRyeSDkaG",
"createdAt" : ISODate("2015-10-27T13:59:06.083Z"),
"createdBy" : "C3i9oj4eapyttHZj6",
"contributors" : [
"C3i9oj4eapyttHZj6"
],
"medias" : [
"TcFqermNY4y5cjBG3",
"dbkNN2rxXJXth8urw",
"jML4JKkRoKxx8sLwu",
"LEWYsnPrXRSH6MPkX"
],
"modifiedAt" : ISODate("2015-11-17T09:35:50.303Z"),
"modifiedBy" : "C3i9oj4eapyttHZj6",
"chunks" : [
"qCCHKJDbdTLEFR5Yt",
"ySiM7dcxvduEM2npj",
"5q46vqrmYttscitiK"
],
"trashed" : ISODate("2015-11-17T09:35:50.303Z")
}
chunks
jest tablica my_array
gdzie ja wyciągnąć i wsunąć my_item.id
w pozycji index
Jaka jest wersja twojego serwera MongoDB? – JohnnyHK
Spróbuj wykonać to samo polecenie w kliencie powłoki 'mongo'. –
@DmytroShevchenko Ta sama komenda działa dobrze w RoboMongo (odpowiednik powłoki klienta, jak sądzę). – Billybobbonnet