$ или оператор не распознается в узле

1

Я беру онлайн-курс, и у меня проблема с запросом. В оболочке работает нормально, но при запуске js файла я получаю сообщение об ошибке: неизвестный оператор: $ или. Это код revelant:

var allOptions = [
    {
        overview: "wiki",
    },
    {
        milestones: "CMO"
    }
];

А затем в функции запроса:

  var query = {};

    if ("overview" in options) {      
     query.overview = { "$or": [{"overview": {"$regex": options.overview, "$options": "i"}}, 
{"tag_list": {"$regex": options.overview, "$options": "i"}}] }

И в оболочке, если я запрошу вот так:

db.companies.find({ $or: [{"overview": {"$regex": "wiki"}}, {"tag_list": {"$regex": "wiki"}}] }).count();

Я получаю результат. Что я делаю неправильно? Любая помощь будет оценена

2 ответа

1
Лучший ответ

Вам нужно .find() правильный элемент:

var allOptions = [ { "overview" : "wiki" }, { "milestones" : "CMO" } ]

var query = { };
if ( allOptions.find( o => o.overview ) ) {

  var overview = allOptions.find(o => o.overview ).overview;
  // returns "wiki"

  query.$or = [
     {"overview": {"$regex": overview, "$options": "i"}}, 
       {"tag_list": {"$regex": overview, "$options": "i"}}
  ];
  // query is now like
  // { "$or": [{"overview": {"$regex": "wiki", "$options": "i" }}, {"tag_list": {"$regex": "wiki", "$options": "i" }}]
}

Company.find(query,function(err,results) {
  console.log(results);
})
  • 0
    @Mellville Покажите, как вы проходите query в своем вопросе. Вы делаете что-то еще неправильно, а также строительство. Я исправил конструкцию и также показал, как правильно передать аргумент.
  • 0
    теперь работает, спасибо за решение и объяснение :)
0

Вам нужно использовать $ или как первое свойство запроса, как в запросе, который вы создали для оболочки.

Например:

query.$or = [ {"overview": {"$regex": overview, "$options": "i"}}, {"tag_list": {"$regex": overview, "$options": "i"}} ]

  • 0
    Нет. Код в вопросе не правильно захватывает options как значение 'wiki' в первую очередь. Это то, что я уже исправил.
  • 0
    Я узнал этот вопрос, поэтому я вернулся, чтобы взглянуть, и полный контекст использования кода: var allOptions = [ { overview: "wiki", }, { milestones: "CMO" } ]; var numQueriesFinished = 0; var companiesSeen = {}; for (var i=0; i<allOptions.length; i++) { var query = queryDocument(allOptions[i]); queryMongoDB(query, i); } Так что на самом деле проблема заключалась в использовании query.overview вместо query.$or
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню