0

以下の形式で mongoDB に挿入されたドキュメントがあります。

{'Name':{'Surname':{'JON':{'AGE':10}}}}

上記の例では、'JON' を無視するが、すべてのユーザーの AGE 値をフェッチするクエリを作成したいと考えています。

私は次のように試しました:

db.names.find({'Name.Surname':{$regex:'.'}}) but didn't work....

私が探しているのは次のようなものです:

db.names.find({'Name.Surname.<matchanything>.AGE':{$gt:0}})
4

1 に答える 1

2

MongoDB がこの方法でワイルドカードの一致をサポートしていたとしても (現在はサポートしていません)、ドキュメント スキームによってクエリを実行するのが難しくなると思います。基本的には、多くのテーブル スキャンを実行することになります。

姓の属性として年齢を持つ理由はありますか?

別の方法は、次の行に沿ったドキュメント構造を持つことです。

{
    "_id" : ObjectId(),
    "Name" : "something",
    "Surname" : "JON",
    "Age" : 10
}

クエリにはどちらがより便利でしょう:

db.user.find({"Name":"something"})
db.user.find({"Age":{"$gte":5}})
于 2012-08-01T01:43:20.313 に答える