Я использую mongo-go-driver (https://godoc.org/github.com/mongodb/mongo-go-driver/mongo), и я пытаюсь сделать эквивалент
db.getCollection('mycollection').aggregate([
{ $lookup: {
from: "anothercollection",
localField: "_id",
foreignField: "foreignID",
as: "matched_docs"
}},
{ $match: { "matched_docs": { $eq: [] } } },
{ $project: { "matched_docs": 0 } },
{ $match: {"dateTimeGMT":{$lt: (new Date(Date.now()-1000*60*60*24)).toISOString()}} }
])
Я не могу понять, как использовать команды Javascript с помощью этого метода.
pipeline := bson.NewArray(
bson.VC.DocumentFromElements(
bson.EC.SubDocumentFromElements(
//yada, yada, yada...
cursor, err := collection.Aggregate(ctx, pipeline)
(Вообще, мне все равно не нравится этот метод. Я хочу иметь возможность создавать запросы в Robo 3T и копировать их в свой код так же, как я делаю это с MySQL Workbench и PHP)
Этот метод дает пустой *bson.Array в конвейере
pipelineJSON := `[
{ $lookup: {
from: "anothercollection",
localField: "_id",
foreignField: "interactionID",
as: "matched_docs"
}},
{ $match: { "matched_docs": { $eq: [] } } },
{ $project: { "matched_docs": 0 } },
{ $match: {"dateTimeGMT":{$lt: (new Date(Date.now()-1000*60*60*24)).toISOString()}} }
]`
pipeline, err = bson.ParseExtJSONArray(pipelineJSON)
Мне бы очень понравилось, если бы был способ отправить Mongo команду в виде строки (как я набирал ее в Robo 3T) и получить обратно *mongo.Cursor. Есть ли лучший драйвер (который все еще поддерживается кем-то), который я должен использовать вместо этого? Нужно ли мне кодировать свой собственный?
Спасибо!