java查找状态为a、b或c且数组大于0的MongoDB记录
我正在努力为其中一个条件建立一个查询,我有这样一个文档:
[
{
"status": "a"
},
{
"status": "b"
},
{
"status": "foo"
},
{
"status": "a",
"flightDetails": [
{
"test": "xyz"
}
]
}
]
我的选择标准如下:
- 获取状态为
a
、b
或c
的所有数据,或 - 获取状态为
a
、b
或c
和flightDetails
的所有数据,其大小为>;0 - 并非所有文档都包含
flightDetails
键李>
我尝试了如下java代码:
BasicDBObject inQuery = new BasicDBObject();
inQuery.append("status", new BasicDBObject("$nin", Arrays.asList("a", "b", "c")));
BasicDBObject inQuery2 = new BasicDBObject();
inQuery2.append("$where", "return Object.keys( this.flightDetails").length > 0");
BasicDBList criteria = new BasicDBList();
criteria.add(inQuery);
criteria.add(inQuery2);
BasicDBObject finalQuery = new BasicDBObject("$or",criteria);
但它会返回所有数据,似乎我的查询不正确。我搜索了很多,根据一些答案,我试图建立一个查询。有人能帮我吗?因为我是NoSQL和MongoDB的初学者,几天前开始学习
# 1 楼答案
对数组的“0”元素和^{} 使用点表示法意味着它有一些内容,当然也存在:
也就是说:
对于那些习惯JSON符号的人
要合并“根本没有数组”,只需构造
$or
条件:或者对于Java: