我有以下格式的Java Mongo Collection。
{
"field1": ["f1","f2"],
"field2": ["g1","g2"],
"Ans": a1
}
{
"field1": ["f4","f5"],
"field2": ["g5","g6"],
"Ans": a2
}
{
"field1": ["f1","f6"],
"field2": ["g2","g3"],
"Ans": a3
}
我需要分别在field1和field2中执行“OR”条件 从我需要做的结果和条件来选择行 例如:f1,f5,g2,g3是我得到的输入 我需要在f1,f5的字段1中进行或干预,所以我将获得所有三行 我需要在第2场用g,g3进行或干预,所以我会得到第1和第3行 虽然做和两个条件我只需要获得第1和第3行 Follwing是使用
的代码 DBObject query1 = new BasicDBObject("field1","f1");
DBObject query2 = new BasicDBObject("field1","f5");
BasicDBList condtionalOperator = new BasicDBList();
condtionalOperator.add(query1);
condtionalOperator.add(query2);
DBObject query = new BasicDBObject("$or", condtionalOperator);
类似OR查询字段2和And查询其结果
我知道它很长。任何人都知道简单的代码吗?
答案 0 :(得分:0)
(我使用Mongo shell JavaScript语法进行响应,因为它比Java更简洁。等效的Java应该很容易生成。)
db.collection.find({$and:[
{field1:{$in:["f1","f5"]}},
{field2:{$in:["g1","g3"]}}
]});
$in
运算符基本上执行OR运算,因此$and
的第一个操作数基本上等于{$or:[{field1:"f1"},{field1:"f5"}]}
。