Hi Antonio,
You can use items_page
and use the operator
field in the query_params
when setting the rules, as said in the documentation here.
You can insert the operator
inside a specific rule:
query_params: {rules: {column_id: "timeline", compare_value: ["2023-06-30", "2023-07-01"], compare_attribute: "START_DATE", operator:between}
You can also use the operator
for rules themselves:
query_params: {rules: [{column_id: "people", compare_value: ["Person 1", "Person 2"], operator:contains_text} {column_id: "status", compare_value: [1, 0]}]operator:and}
Hope this helps with your queries!
Best,
Joseph
Hi Joseph. Thanks for your response.
I’m still unclear as to how I can combine both logical operators (AND/OR) in an items_query.
For example, I can find projects that last less than 5 days OR more than 100 days (e.g. I’m looking for outliers) like so:
query_params:
{
rules: e
{
column_id: “duration__days_”,
compare_value: 5,
operator: lower_than
},
{
column_id: “duration__days_”,
compare_value: 100,
operator: greater_than
}
],
operator: or
}
)
How can I now add an extra criteria that says that the Status of the project is “Stuck”, i.e. find projects that are stuck, whose duration is either lower than 5 or higher than 100?
In pseudo-code this would be an expression like:
(DurationDays < 5 OR DurationDays > 100) AND Status = ‘Stuck’
Notice I’m combining the OR operator with the AND operator. In the UI I would do this using the “Add new group” button, but I don’t know the equivalent way to do this via the API.
Hi Antonio,
I think you can do something like this:
query_params:
{rules: [{[{column_id: “duration__days_”,compare_value: 5,operator: lower_than
},{column_id: “duration__days_”,compare_value: 100,operator: greater_than}],
operator: or}},
>{column_id:“status”,compare_value:“stuck”,operator:contains_text]operator: and}
Essentially, you can create the list of rules and use an operator between the list of rules.
Best,
Joseph
Hi Joseph,
Nesting an array of rules inside a parent rule makes sense to me, for this requirement, but it doesn’t appear to work. I keep getting parse error and red squiggles in the API playground.
Could you give it a try on your end? I might be messing something up with parentheses.
I’d very much appreciate a working example query.
Thanks,
Antonio
Hi Antonio,
Can you share the query_params
you have ended up with? I am guessing you’ve been playing around with it more than just the example I provided. I will try on my end as well.
Best,
Joseph
Dear Antonio,
I’ve reviewed your question regarding filtering items on Monday.com via the API using “and” and “or” combination criteria, and I managed to find a solution that might be helpful to you.
After exploring different approaches, I was able to craft a query that utilizes nested rules within groups to combine “and” and “or” logic as follows:
{
boards(ids: 1452653689) {
groups(ids: >"new_group29179"]) {
items_page(
query_params: {
groups: {
rules:
{ column_id: "numbers", compare_value: ""100"], operator: any_of }
],
operator: and,
groups: {
rules:
{ column_id: "name", compare_value: ""Task 1"], operator: any_of },
{ column_id: "name", compare_value: ""Task 3"], operator: any_of }
],
operator: or
}
}
}
) {
cursor
items {
id
name
column_values(ids: o"name", "numbers"]) {
id
text
}
}
}
}
}
}
Has anyone been able to make this query work? when I put it in the playground I get an error message saying the query_params object doesn’t contain a groups field.
Hello there @sgdev,
Would you be able to please share the exact query you are using? (you can omit sensitive data).