title: mongo-go-driver: nested OR/AND query filter
body: <p>I try to create a MongoDB query filter with the nested operators (OR/AND/...). But lib requires to create a <code>bson.D</code> and pass <code>bson.E</code> elements into it. If I need to have <code>OR/AND</code> inside <code>AND/OR</code> - I need to put <code>bson.M + bson.D</code> inside <code>bson.D</code> like this:</p>
  
  <pre><code>filter := bson.M{"$and": bson.D{{"p", 10}, bson.M{"$or": bson.D{{"s", 30}, {"a", 1}}}}}
  </code></pre>
  
  <p>.. and of course it doesn't work: <code>cannot use primitive.M literal (type primitive.M) as type primitive.E in slice literal</code>. Probably the same problem will happen if later I try to use a <code>... in []</code> logics inside a <code>bson.D</code></p>
  
  <p>How do I create such nested queries in Go and official MongoDB driver?</p>