I am trying to fetch data based on filter based queries. Right now I am using
filter_stuff = {'url': 1, 'organization_name': 1, 'hum_pred':1, 'ml_pred':1, '_id': 0}
myData = list(crawlcol.find({'hum_pred': 'null'}, filter_stuff))
This will fetch data where hum_pred have values null.
hum_pred and ml_pred will have values valid invalid or null
How is it possible to fetch data which has field values hum_pred is null and ml_pred is valid or invalid
sample data
[
{"url":"www.example1.com","organization_name":"abc","ml_pred":"Valid", "hum_pred":"invalid"},
{"url":"www.example2.com","organization_name":"gvg","ml_pred":"Invalid", "hum_pred":"null"},
{"url":"www.example3.com","organization_name":"hsg","ml_pred":"null", "hum_pred":"null"},
{"url":"www.example4.com","organization_name":"hga","ml_pred":"Valid", "hum_pred":"valid"},
{"url":"www.example5.com","organization_name":"tre","ml_pred":"Invalid", "hum_pred":"valid"}
]
Expected Output
[{"url":"www.example2.com","organization_name":"gvg","ml_pred":"Invalid", "hum_pred":"null"}]
CodePudding user response:
The query will be like
myData = list(crawlcol.find({"$and": [{"ml_pred": {"$ne": "null"}},{"hum_pred": {"$eq": "null"}}]}))
CodePudding user response:
Query
- you have strings for example
"null", so strings are used fornull - to check if equal with one of multiple values we can use
$or and $eqor$inlike bellow ($inis more compact for this use)
*if you have only 3 possible values for ml_pred the @imhans4305
answer is even shorter, so go for the other i think, this is how you could do it in general case.
find({"hum_pred": "null","ml_pred": {"$in": ["Valid", "Invalid"]}})
