MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Requête Mongo sur les sous-champs

Une autre approche, plus efficace, consisterait à implémenter votre sous-document "statut" sous la forme d'un tableau de "valeurs typées", comme ceci :

 {"_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"}

Cela vous permettrait de trouver tous les documents, pour lesquels l'un des sous-champs a la valeur "obligatoire", avec cette requête :

db.foo.find({"status.value":"required"})

Définir un index sur ce sous-champ permettrait d'accélérer la requête :

db.foo.ensureIndex({"status.value":1})