次のようなデバイスに関する情報を保存したコレクションがあります。
/* 1 */
{
"_id" : {
"startDate" : "2012-12-20",
"endDate" : "2012-12-30",
"dimensions" : ["manufacturer", "model"],
"metrics" : ["deviceCount"]
},
"data" : {
"results" : "1"
}
}
/* 2 */
{
"_id" : {
"startDate" : "2012-12-20",
"endDate" : "2012-12-30",
"dimensions" : ["manufacturer", "model"],
"metrics" : ["deviceCount", "noOfUsers"]
},
"data" : {
"results" : "2"
}
}
/* 3 */
{
"_id" : {
"dimensions" : ["manufacturer", "model"],
"metrics" : ["deviceCount", "noOfUsers"]
},
"data" : {
"results" : "3"
}
}
そして、一意になる_idフィールドを使用してドキュメントをクエリしようとしています。私が抱えている問題は、次のようにすべての異なる属性を照会するときです。
db.collection.find({$and: [{"_id.dimensions":{ $all: ["manufacturer","model"], $size: 2}}, {"_id.metrics": { $all:["noOfUsers","deviceCount"], $size: 2}}]});
これは2つと3つのドキュメントに一致します(属性値の順序は関係ありません)が、3つだけを取得したいと思います。検索クエリで指定した属性以外の属性が_idに存在してはならないことをどのように言うことができますか?
お知らせ下さい。ありがとう。