There is, yes, using a combination of row_to_json, array_to_json, array_agg and ST_AsGeoJSON. I realize, on rereading your question, that you asked for ogr2ogr approach, but seeing as your source is Postgis, I thought you might appreciate a pure Postgres/Postgis approach. I have used this approach with Google Maps, so it works well if you need to create GeoJSON dynamically, which would be tricker with ogr2ogr.
SELECT row_to_json(featcoll)
FROM
(SELECT 'FeatureCollection' As type, array_to_json(array_agg(feat)) As features
FROM (SELECT 'Feature' As type,
ST_AsGeoJSON(tbl.geom)::json As geometry,
row_to_json((SELECT l FROM (SELECT id, prop1, prop2, ...) As l)
) As properties
FROM your_table As tbL
WHERE st_intersects(geom, st_setsrid(st_makebox2d(st_makepoint(x1, y1),st_makepoint(x2, y2)), srid))
) As feat
) As featcoll;
where there is an optional where clause with an ST_Intersects. In the inner query, you can add to Select id, prop1, etc, to get a list of any properties that you would like to appear in the output GeoJSON.
The original idea for this comes from this BostonGIS blog
EDIT: If you have Postgres 9.4 or higher, use @dbaston's answer. It is so much cleaner.
It shouldbe your second option, Multipart to Single Part. Notice, however, that this will only work with Multilinestrings whose individual Linestrings are spatially connected. To be spatially connected means that either the start or the end point of a line shall have the same coordinates as either the start or end point of another line, as such:
# Line A and Line B are connected
Linestring A (0 0, 1 1)
Linestring B (1 1, 2 3)
# Line A and Line B are disconnected
Linestring A (0 0, 1 1)
Linestring B (1 2, 2 3)
What Multipart to Single Part does is transform your one multiline feature into one single line feature, but if the individual linestrings are disconnected, it can't return one single feature, thus it returns a multiline. There are two things you can do from here:
1. Your Multiline really should be only one linestring feature
This means you'll have to edit your data. In QGIS, go to Properties -> Styles, add another line style on top of your current one, and change it to Marker Style. Then set it to last vertex only, and change the shape of it from a ball to a sideways triangle.
With this, you know the start and end of each individual line in your multiline feature. Then check for the arrows along your line, these are the intersections. Edit the layer, with snap enabled, and make sure each point with a triangle properly connects to the first point of the next line. Only the first and last points of the entire multiline should not need be connected to anything. Then try the Mulyipart to Single Part again.
2. I don't care about the number of features, I just want simple Linestrings
This means a conversion from one Multiline feature to many single Line features. QGIS doesn't do this (afaik), but PostGIS does. You should already have it installed together with QGIS, so create a database, upload your layer (easiest done with QGIS' DB Manager plugin), then execute:
SELECT (ST_DUMP(geom).geom) as geom
FROM your_table_name
The result should be a bunch of binary-code features. These are your Linestrings in WKB format. Below the result panel there is an option to load the result back into QGIS. Just choose a layer name and click Load. Notice, however, that this loaded layer is virtual, you'll need to save it as a shapefile or sometging if you want to retain it after you quit QGIS.
Best Answer
You can use the Dissolve tool from QGIS:
Vector > Geoprocessing Tools > Dissolve