Я хочу, чтобы запросить все документы, которые имеют идентификаторы из некоторого массива я прошел в мой код от входа пользователя:
var attackersIds = fights[i].attackersIds;
attackers = cardsCollection.find({"_id" : { "$oid" : { $in: attackersIds } } });
Проблемы в том, я получаю сообщение об ошибке для этого:
MongoDB: Can't canonicalize query: BadValue unknown operator: $oid
I обнаружили, что она может быть решена с помощью ObjectId(...)
, но когда я делаю так:
var attackersIds = fights[i].attackersIds;
for(var a=0; a<attackersIds.length; a++){
attackersIds[a] = ObjectId(attackersIds[a]);
}
attackers = cardsCollection.find({"_id" : { "$oid" : { $in: attackersIds} } });
я получаю другую ошибку:
ReferenceError: \"ObjectId\" is not defined.
Я предполагаю, что это из-за старой версии node.js, но я не могу ее изменить, поскольку мой серверный провайдер не позволяет мне обновить.
Итак, как я могу запросить mongodb для документов, которые хранятся в моем массиве var attackersIds
?
Образцы документов:
{ "_id": { "$oid": "567ee17ae4b0128ba4ce9049" }, "classId": 9, "name": "Recruit", "description": "", "type": "creature", "cost": { "yellow": 1 }, "attack": 1, "defense": 0, "hp": 1, "area": "field1", "playerId": "56590c7ce4b03fe0cf20842d" }
{ "_id": { "$oid": "567ee17ae4b0128ba4ce904a" }, "classId": 1, "name": "Farm", "description": "", "type": "building", "cost": {}, "attack": 0, "defense": 0, "hp": 5, "generatesMana": { "yellow": 1 }, "area": "hand", "playerId": "56590c7ce4b03fe0cf20842d" }
{ "_id": { "$oid": "567ee17ae4b0128ba4ce904b" }, "classId": 1, "name": "Farm", "description": "", "type": "building", "cost": {}, "attack": 0, "defense": 0, "hp": 5, "generatesMana": { "yellow": 1 }, "area": "hand", "playerId": "56590c7ce4b03fe0cf20842d" }
{ "_id": { "$oid": "567ee17ae4b0128ba4ce904c" }, "classId": 9, "name": "Recruit", "description": "", "type": "creature", "cost": { "yellow": 1 }, "attack": 1, "defense": 0, "hp": 1, "area": "deck", "playerId": "56590c7ce4b03fe0cf20842d" }
Можете ли вы разместить пример документов? Вы используете мангуст? –
@VolodymyrSynytskyi Я добавил образцы документов. О мангусте, у меня никогда не было такого сердца, и я не могу найти примечание об этом в спецификации сервера, поэтому мой ответ «может быть»: P – PolGraphic
вы используете Meteor? – Jay