diff --git a/arango/utils.py b/arango/utils.py index 359b1e3..541f9d0 100644 --- a/arango/utils.py +++ b/arango/utils.py @@ -120,5 +120,9 @@ def build_filter_conditions(filters: Json) -> str: if not filters: return "" - conditions = [f"doc.`{k}` == {json.dumps(v)}" for k, v in filters.items()] + conditions = [] + for k, v in filters.items(): + field = k if "." in k else f"`{k}`" + conditions.append(f"doc.{field} == {json.dumps(v)}") + return "FILTER " + " AND ".join(conditions) diff --git a/tests/test_document.py b/tests/test_document.py index 805486f..3759950 100644 --- a/tests/test_document.py +++ b/tests/test_document.py @@ -1241,6 +1241,10 @@ def test_document_find(col, bad_col, docs): col.insert({"foo bar": "baz"}) assert len(list(col.find({"foo bar": "baz"}))) == 1 + # Test find by nested attribute + col.insert({"foo": {"bar": "baz"}}) + assert len(list(col.find({"foo.bar": "baz"}))) == 1 + def test_document_find_near(col, bad_col, docs): col.import_bulk(docs)