mongo 基本数据类型

Type
bosun.E type E struct { Key string Value interface{} } E represents a BSON element for a D. It is usually used inside a D.
bosun.D type D []E D is an ordered representation of a BSON document. This type should be used when the order of the elements matters, // such as MongoDB command documents. If the order of the elements does not matter, an M should be used instead. // // Example usage: // // bson.D{{“foo”, “bar”}, {“hello”, “world”}, {“pi”, 3.14159}}
bosun.M type M map[string]interface{} // M is an unordered representation of a BSON document. This type should be used when the order of the elements does not // matter. This type is handled as a regular map[string]interface{} when encoding and decoding. Elements will be // serialized in an undefined, random order. If the order of the elements matters, a D should be used instead. // // Example usage: // // bson.M{“foo”: “bar”, “hello”: “world”, “pi”: 3.14159}.
bosun.A type A []interface{} // An A is an ordered representation of a BSON array. // // Example usage: // // bson.A{“bar”, “world”, 3.14159, bson.D{{“qux”, 12345}}}

设置某个字段的值

1setValue := bson.E{Key: "$set", Value: bson.D{{"end_at", alert.CreatedAt}}})
2          ? bson.E{Key: "$set", Value: bson.D{{"end_at", alert.CreatedAt}}})
3	update = append(update, bson.E{Key: "$inc", Value: bson.D{bson.E{Key:"count", Value: 1}}})

filter

1filter = make(bson.D, 0)
2filter = 

$or

1{"key1":1,"$or":[{"key2":2},{"key3":2}]
1filter:= bson.D{
2  {"key1",1},
3  {"$or":[]interface{
4    bson.M{"key2":2},
5    bson.M{"key3":2},
6  }}
7}

The query should be equivalent to the following in the mongo console

1db.mycollection.find{{"key1":1,"$or":[{"key2":2},{"key3":2}]}}

if you’d rather wish to use unordered maps, it would be like this

1pipeline := bson.M{
2  "key1":1;
3  "$or":[]interface{
4    bson.M{"key2":2},
5    bson.M{"key3":2},
6  }
7}

other example

 1findQuery := bson.M{
 2  "key1":1,
 3}
 4
 5orQuery:= []bson.M{}
 6orQuery= append(orQuery, bson.M{"key2":2}, bson.M{"key3":2})
 7
 8findquery["$or"] = orQuery
 9result := []interface{}
10err := mongo.DB.C("collectionName").find(findQuery).All(&result)