0

I have documentsin gamescollection.各ドキュメントは、ゲームの実行に必要なデータを保持する責任があります。ここに私の文書構造があります

{
    _id: 'xxx',
    players: [
            user:{} // Meteor.users object
            hand:[] //array
            scores:[]
            calls:[]
        ],
    table:[],
    status: 'some string'


}

基本的にこれは私のカードゲーム(call-bridge)の構造です。ここで公開したいのは、プレイヤーが自分のhandデータをブラウザ ( minimongo ) に他のプレイヤーのuser, scores, callsフィールドと一緒に持つことです。というわけでブラウザに降りるサブスクリプションはこんな感じになります。

{
    _id: 'xxx',
    players: [
            {
                user:{} // Meteor.users object
                hand:[] //array
                scores:[]
                calls:[]
            },
            {
                user:{} // Meteor.users object
                scores:[]
                calls:[]
            },
            //  2 more player's data, similar to 2nd player's data

        ],
    table:[],
    status: 'some string'


}

players.userオブジェクトには_id、ユーザーを区別するプロパティがあります。meteor publish メソッドでthis.userIdは、データを要求している userId を返すアクセス権があります。これは、 と一致するhandユーザーのネストされた配列が必要であることを意味します。この説明が、より正確な解決策を書くのに役立つことを願っています。_idthis.userId

4

2 に答える 2

0

配列要素から特定のプロパティを取得するには、以下の行 db.games.aggregate([{$unwind:"$players"},{$project:{"players.scores":1}}] のように記述します。 ); これにより、 id フィールドと score フィールドのみが得られます

于 2016-06-24T12:36:00.220 に答える