एक और, अधिक कुशल, दृष्टिकोण यह होगा कि आप अपने "स्थिति" उप-दस्तावेज़ को "टाइप किए गए मानों" की एक सरणी के रूप में लागू करें, जैसे:
{"_id" : ObjectId("51385d2308d427ce306f0100"),
"aid" : "1",
"studyId" : "study-1",
"mediaType" : "microBlog",
"text" : "bla bla",
"sentences" : "bla bla",
"status" : [
{ type: "algo1", value: "required" },
{ type: "algo2", value: "required" },
{ type: "algo3", value: "completed" },
{ type: "algo4", value: "completed" }
],
"priority" : "u"}
यह आपको उन सभी दस्तावेज़ों को खोजने की अनुमति देगा, जिनके लिए किसी भी उप-फ़ील्ड का मूल्य "आवश्यक" है, इस क्वेरी के साथ:
db.foo.find({"status.value":"required"})
इस उप-फ़ील्ड पर एक इंडेक्स को परिभाषित करने से क्वेरी तेज हो जाएगी:
db.foo.ensureIndex({"status.value":1})