When searching for objects using $in, the cursor always drops the first found object. All subsequent displays are normal.
ids := []string{"1","2","3"}
filter := bson.M{"terminal_id": bson.M{"$in": ids}}
cursor, err := s.db.Collection(collectionTerminal).Find(ctx, filter)
if err != nil {
return nil, err
}
defer cursor.Close(ctx)
var terminalList []*terminal.Terminal
for cursor.Next(ctx) {
var term *terminal.Terminal
err := cursor.Decode(&term)
if err != nil {
fmt.Println(err)
return nil, err
}
terminalList = append(terminalList, term)
}
// in terminalList: [{"id":"2"}, {"id":"3"}]
// must be: [{"id":"1"}, {"id":"2"}, {"id":"3"}]