Pythonでmongoengineを使用しています。モデルを宣言するために、次のコードがあります。
class Subject(Document):
uri = StringField(required=True,unique=True)
resources = ListField(ReferenceField('Resource'))
meta = {
'indexes': [
{'fields': ['uri'], 'unique': True},
],
}
インデックスが作成されているか、期待どおりに機能していることを確認したかったので、mongo に移動して実行しました。
db.subject.find({uri:' http://dbpedia.org/resource/Napoleon '}).explain()
そのコマンドの出力は次のとおりです。
{
"cursor" : "BtreeCursor uri_1",
"isMultiKey" : false,
"n" : 1,
"nscannedObjects" : 1,
"nscanned" : 1,
"nscannedObjectsAllPlans" : 1,
"nscannedAllPlans" : 1,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"indexBounds" : {
"uri" : [
[
"http://dbpedia.org/resource/Napoleon",
"http://dbpedia.org/resource/Napoleon"
]
]
},
"server" : "ioannis-linux:27017",
"filterSet" : false
}
mongodb docs を見て理解できないのは、なぜ同じ uri インデックスの 2 つのエントリを に取得するのindexBounds
かということです。これはどういう意味ですか? これは、検索するすべての URI で発生します。
アップデート
これが関連しているかどうかはわかりませんが、同じ URI をインデックスとして使用している別のドメイン クラスもあります..( Resource
)