Domanda

Is it possible to selectively retrieve depending on the existence of keys in a map in mongodb? And if so, how do you go about doing it?

Suppose I have a document that looks like this for example..

{ "_id": 1234,
    "parentfield1" : {
        "childfield1" : { ...},
        "childfield2" : { ...},
        "childfield5" : { ...}, // There might be many childfields.. > 50
    },
} 

How would I be able to selectively retrieve from the document a/some particular childfields given multiple options to choose from? Some of which may not exist in the document.

i.e.

input "childfield1", "childfield2", "childfield3"

-> output 

{ "_id": 1234,
  "parentfield1": {
      "childfield1" : { ... },
      "childfield2" : { ... },
  },
}

Is it even doable? Is it possible to do efficiently also? Any help would be great (python, go).

È stato utile?

Soluzione

Yes, that's the purpose of the projection parameter of find:

db.collection.find({_id: 1234}, {
    'parentfield1.childfield1': 1,
    'parentfield1.childfield2': 1,
    'parentfield1.childfield3': 1
});

If a specified field isn't present in a given doc, the other matching fields will still be included.

Build up the projection parameter object programmatically if you want it to be dynamic.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top