मैं अपनी क्वेरी को एक साथ रखने के लिए QueryBuilder वर्ग का उपयोग कर रहा हूं।
QueryBuilder queryBuilder = new QueryBuilder();
Pattern regex = Pattern.compile("^((?!Salt).)*$");
queryBuilder.put("contract").notEquals("none").and("contract").notEquals(null).and("contract").regex(regex).get();
मेरी समस्या यह है कि यह केवल अंतिम और स्थिति लेता है इसलिए मेरी क्वेरी इस तरह दिखती है:
{ "contract" : { "$regex" : "^((?!Salt).)*$"}}
मैं नहीं जानता कि मैं क्या गलत कर रहा हूँ। मैंने भी पुट () के बजाय (और) डालने की कोशिश की https://stackoverflow.com/a/24025462/3811673.
उत्तर:
उत्तर № 1 के लिए 1आप प्रत्येक अभिव्यक्ति को एक एकल में लपेटने का भी प्रयास कर सकते हैं and()
ऑपरेशन, कुछ इस तरह
BasicDBObject document = new BasicDBObject();
Pattern regex = Pattern.compile("^((?!Salt).)*$");
QueryBuilder queryBuilder = new QueryBuilder();
queryBuilder.and(
new QueryBuilder().put("contract").notEquals("none").get(),
new QueryBuilder().put("contract").notEquals(null).get(),
new QueryBuilder().put("contract").regex(regex).get()
);
document.putAll(queryBuilder.get());
DBCursor cursor = getDbCollection().find(document);