Запрос rmongodb, сочетающий AND, OR и совпадение строк

Извинения, если это уже было решено.

В mongodb у меня есть коллекция баз данных, которая называется "main". Я могу успешно выполнить следующий запрос из оболочки mongodb:

        db.main.find( {
    $or : [
        { $and : [ { "Var1Path": /.*20072.*/ }, { "Var2Path": /.*30033.*/ } ] },
        { $and : [ { "Var1Path": /.*30033.*/ }, { "Var2Path": /.*20072.*/ } ] },
    ]
} )

Я пытаюсь выполнить тот же запрос в R с rmongodb. Запрос объединяет AND и OR. Косые черты действуют как совпадение строк (например, найдите строку '20072' в любом месте поля с именем Var1Path). Можно ли это запустить в R с помощью rmondodb? Если так, как это должно быть написано?

1 ответ

Решение

Вы пытались написать код / ​​прочитать виньетки rmongodb?
Вам нужно что-то вроде этого:

and_1 = list("$and" = list( list("Var1Path" = list("$regex" = "20072" )), 
                            list("Var2Path" = list("$regex" = "30033" )) ))
and_2 = list("$and" = list( list("Var1Path" = list("$regex" = "30033" )), 
                            list("Var2Path" = list("$regex" = "20072" )) ))
mongo.find(mongo = mongo, ns = 'db_name.collection_name', 
           query = list("$or" = list(and_1, and_2)))

Одна вещь, которую должны помнить все пользователи rmongodb: существует очень прямое отображение между объектами mognodb и R-объектами - без имени list s анализируется как массивы и называется list разбираются как объекты.

Другие вопросы по тегам