Azure Cosmos DB doesn't seem to support queries on array properties (not question about MongoDB syntax).
Expected, Working locally on v3.4.9:
> db.test.insertOne({'Name': 'Bob', Children: ['Rex']})
> db.test.find({Children: {$exists: true, $not: {$size: 0}}})
{ "_id" : ObjectId("59baff11002b35f7ea2864a4"), "Name" : "Bob", "Children" : [ "Rex" ] }
> db.test.find({$where: 'this.Children.length>0'})
{ "_id" : ObjectId("59baff11002b35f7ea2864a4"), "Name" : "Bob", "Children" : [ "Rex" ] }
On Azure Cosmos DB:
> db.test.insertOne({'Name': 'Bob', Children: ['Rex']})
> db.test.find({Children: {$exists: true, $not: {$size: 0}}})
Error: error: {
"_t" : "OKMongoResponse",
"ok" : 0,
"code" : 2,
"errmsg" : "Request is malformated",
"$err" : "Request is malformated"
> db.test.find({$where: 'this.Children.length>0'})
Error: error: {
"_t" : "OKMongoResponse",
"ok" : 0,
"code" : 2,
"errmsg" : "Request is malformated",
"$err" : "Request is malformated"
}
How can I find items where Children exists but is not empty?
UPDATE:
Localhost:
> db.test.find({ "Children.0": { "$exists": true }})
{ "_id" : ObjectId("59baff11002b35f7ea2864a4"), "Name" : "Bob", "Children" : [ "Rex" ] }
Cosmos DB:
> db.test.find({ "Children.0": { "$exists": true }})
>