morphiaクエリーmongodb埋め込みドキュメント
7446 ワード
mongodbに格納されているドキュメントのフォーマットは、fromdataの下でdidとdvidが指定した値であるデータをクエリーすることを実現します.
dbを使用します.device_rules.find({"fromdata.did":"bbb","fromdata.dvid":"1"})はfromdataのdid=bbb,dvid=1のデータをクエリーするが、did=bbb,dvid=2をクエリーすると、上記の結果が検出され、クエリー条件と配列の異なるドキュメントが一致する!
条件オペレータ「$elemMatch」を使用すると、条件のセットを組み合わせることができます.また、ポイント表現のあいまいなクエリの効果は、次のようになります.
db.device_rules.find({ "fromdata": { "$elemMatch": { "did": "bbb", "dvid": "2"} } })
morphiaを使用してクエリーを行います.
1.dbについて.device_rules.find({ "fromdata.did": "bbb", "fromdata.dvid": "1"})
2 dbについて.device_rules.find({ "fromdata": { "$elemMatch": { "did": "bbb", "dvid": "2"} } })
転載先:https://www.cnblogs.com/iiot/p/4463873.html
{
"_id": {
"$oid": "553f4a9facc494278f5ad1b0"
},
"rid": "9eec7fbe8a6f4d17b02756fdbcefcc41",
"rname": " 1",
"username": "zhaoptest",
"enable": 1,
"fromdata": [
{
"did": "aaa",
"dvid": "1",
"opt": "3",
"value": "44"
},
{
"did": "bbb",
"dvid": "1",
"opt": "3",
"value": "44"
}
],
"todata": [
{
"did": "aaa",
"dvid": "2",
"value": "3"
},
{
"did": "ccc",
"dvid": "2",
"value": "3"
}
]
}
dbを使用します.device_rules.find({"fromdata.did":"bbb","fromdata.dvid":"1"})はfromdataのdid=bbb,dvid=1のデータをクエリーするが、did=bbb,dvid=2をクエリーすると、上記の結果が検出され、クエリー条件と配列の異なるドキュメントが一致する!
条件オペレータ「$elemMatch」を使用すると、条件のセットを組み合わせることができます.また、ポイント表現のあいまいなクエリの効果は、次のようになります.
db.device_rules.find({ "fromdata": { "$elemMatch": { "did": "bbb", "dvid": "2"} } })
morphiaを使用してクエリーを行います.
1.dbについて.device_rules.find({ "fromdata.did": "bbb", "fromdata.dvid": "1"})
this.createQuery().field("fromdata.did").equal(fromDid).field("fromdata.dvid").equal(fromDvid).asList();
2 dbについて.device_rules.find({ "fromdata": { "$elemMatch": { "did": "bbb", "dvid": "2"} } })
FromData fd = new FromData();
fd.setDid(fromDid);
fd.setDvid(fromDvid);
return this.createQuery().field("fromdata").hasThisElement(fd).asList();
転載先:https://www.cnblogs.com/iiot/p/4463873.html