0

MongoDB で単一の埋め込みドキュメントをクエリするときに、配列の代わりに単一のオブジェクトを取得する方法があるのだろうか

ユーザーが埋め込まれたグループがあります

{
 groupname: "Admins",
 users: [
    { 
        email: bob@google.com, 
        first_name: 'bob'
    },
    {...},
    {...} // multiple embedded users
 ]
}

このクエリを使用して、グループから単一のユーザーをクエリできます

db.groups.find({'users.email' => bob@google.com}, {'users.$' => 1})

しかし、それは私に1つのユーザー初期化を持つ「ユーザー」配列を与えます

{
 groupname: "Admins",
 users: [
    { 
        email: bob@google.com, 
        first_name: 'bob'
    }
 ]
}

次に、配列の最初の要素を選択する必要があります。

users[0] 

問題はありませんが、アプリケーションにさらにコードを記述する必要があるだけです。より良い方法は

user (-s)

クエリを実行できるように

user.first_name

誰か方法を知っていたら教えて

4

2 に答える 2

1
You can use findOne as it returns a single document, where find returns a cursor.

>user =  db.groups.findOne({'users.email' : bob@google.com}, {'users.$' => 1})
>user.first_name
于 2014-08-13T18:49:40.613 に答える
0

使用しているドライバーによっては、findOne が非推奨になっているため、find().limit(1).next(function(err, doc){})を使用する必要があります。

http://mongodb.github.io/node-mongodb-native/2.0/api/Collection.html#findOne

于 2016-10-16T16:42:49.157 に答える