コレクションをチェックして、特定の値のセットと一致するドキュメントが少なくとも1つあるかどうかを確認しようとしています。
https://github.com/mongodb/mongo-go-driver#usageにあるドキュメントを読んでみましたが、そこに多くの助けを見つけることができないようです。私はMongoDB&Goにかなり慣れていませんが、これは私の経験不足の問題であると考えています。
以下は、mongo-go-driverで実行しようとしているStudio 3Tのサンプルクエリです。
db.getCollection("events").find(
{
"event.eventType" : "OSR",
"context.vehicleId" : NumberInt(919514),
"ts" : {
"$gte" : ISODate("2019-06-21T21:38:43.022+0000")
}
}
).limit(1);
と思われるcontext.FindOne
方法は、私がやりたい(との必要性を排除します.limit(1)
)。これをGoとmongo-go-driverに「移植」するのは簡単だと思いました。
私は一種のこの仕事をすることができます、例えば私は私にすべてのOSRを見つける次のものを持っています:
var query = &bson.D{
{"event.eventType", "OSR"},
}
result := bson.D{}
e := collection.FindOne(context.TODO(), query).Decode(&result)
これにより、ドキュメントが1つ返されます。ここで、vehicleId
値を含めたい場合、次のように更新query
します。
var query = &bson.D{
{"event.eventType", "OSR"},
{"context.vehicleId", 919514},
}
ドキュメントは返されません。まだフィールドquery
を含めるために拡張する必要はありts
ません。
少なくとも1つのドキュメントが返されることを期待しますが、何も表示されません。誰かが私が間違っていることについてのいくつかのヒント、提案、またはガイダンスを持っていますか?
よくわかりませんが、bson.M
代わりに試しましたbson.D
か?
少なくとも私には効果があるようです。
query := &bson.M{
"event.eventType": "OSR",
"context.vehicleId": 919514,
}
詳細については、ドキュメントを参照してください。
また、@ owlwalksが言ったように、あなたは正しいですか?
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加