Как мне решить: «MongoError: $ где не разрешен на этом уровне атласа»? - PullRequest
0 голосов
/ 15 января 2019

Как мне решить: «MongoError: $ где не разрешено на этом уровне атласа» при использовании MongoDB Atlas?

Вот мой код:

async function getEventsTakingPlace(){
    const getEventsTakingPlace = await event.find({$where: function() { 
        return ((this.eventTime < new Date()) && (new Date(this.eventTime).getTime()+ 100*60000 > new Date().getTime() ) ) }},
        function(err, events){
        if(err){
            return err;
        }else {
            return events; 
        }
    }); 
    return getEventsTakingPlace 
};

когда я использую свой локальный экземпляр mongoDB, он работает, но как только я начинаю использовать mongoAtlas, я получаю ошибку: $ where не разрешено в этом уровне атласа. Как мне это решить?

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Хотя $where может не поддерживаться используемым уровнем Atlas, хорошая новость заключается в том, что вам не нужно использовать его для этого запроса.

Вместо этого используйте запрос вроде:

let now = new Date();
let min = new Date();
min.setTime(now.getTime() - 100*60000);
const events = await event.find({eventTime: {$gt: min, $lt: now}});

В общем, вы все равно хотите использовать $where как последнее средство, так как это неэффективно.

0 голосов
/ 15 января 2019

Мне только что сказали, что экземпляры свободного уровня (M0), M2 и M5 имеют некоторые ограничения и ограничения команд, включая ограниченные метрики для анализа. Поэтому мне нужно обновить, чтобы получить больше возможностей ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...