1

埋め込みドキュメントの mongo データベースにクエリを実行しようとしています。ドキュメント内のフィールドと埋め込みドキュメント内のフィールドに基づいてクエリを実行しています。

いくつかのドキュメントの例を次に示します。

ドキュメント 1

{
  token: 'foo'
  services: [
  {
    service: 'one',
    data: {...}
  },
  {
    service: 'two',
    data: {...}
  }
  ]
}

ドキュメント 2

{
  token: 'bar'
  services: [
  {
    service: 'one',
    data: {...}
  },
  {
    service: 'two',
    data: {...}
  }
  ]
}

{service: 'one', data: {...}}最初のドキュメントから埋め込みドキュメントを取得したいと思います。ただし、クエリを構成する方法がよくわかりません。助言がありますか?

4

2 に答える 2

0

ドキュメント 1 とドキュメント 2 が同じコレクション内の 2 つのドキュメントを表す場合、id や名前などの明確な識別子で最初のドキュメントを取得し、コードからサービス配列の最初の要素を読み取る必要があります。

doc 1 と doc 2 がクエリの結果であり、{service: 'one', data: {...}} に一致するドキュメントをフィルタリングする必要がある場合、services は配列であるため、$elemMatch を使用する必要があります。

coll.find( { services : { $elemMatch : { service : "one", data: { ... } } } } )
于 2012-11-15T09:43:47.817 に答える
0

そのようなコレクションがある場合:

   var coll =  {
      token: 'foo',
      services: [
        {
          service: 'one',
          data: {}
        },
        {
          service: 'two',
          data: {}
        }
      ]
    }

service: 'one'クエリを使用してオブジェクトにアクセスできcoll.services[0]ます。

更新 されたフィールドでオブジェクトを選択したい場合は、これを試すことができます:

$.grep(coll.services, function(e) { return e.service == 'one' });
于 2012-11-15T06:26:02.800 に答える