オリジナルの json
クエリしたい結果:
db.xxx.find() の書き方を教えてください
まずコメントさせてください:
質問して、を最小限に抑える再現性のあるの問題の例を投稿してください。このような長い文書を投稿すると、誰もがとても読むでしょう。 。
実際に必要なのは、配列全体ではなく、 配列内の特定のドキュメント を返すことです。
1 配列内の要素を 1 つだけ返す必要がある場合
1行目はクエリ条件、2行目はフィルタ条件です。 演算子はフィルター条件でも使用できることがわかります。ただし、この演算子は条件を満たす最初の要素のみを返します。 には MongoDB バージョン 2.2 以降が必要です 。
または、$ 添字セレクターを使用します: $下标选择符:
$
db.xxx.find( {'contents.standardID': '9527-01'}, {contents: {$elemMatch: {standardID: '9527-01'}}, _id: 0} )
上面例子中的查询条件也可以使用$elemMatch。
$elemMatch
如果你需要返回数组中多个匹配的元素:
2 $unwind
$unwind
通过把$unwind来把contents作为一个独立的文档流来进行操作,代码见@bguo的回答。但是如果你的数组很大,这会导致性能问题。
contents
3 $filter
$filter
这是一个3.2版本中新出的操作符,用来过滤返回的内容。
3.2
db.xxx.find( {'contents.standardID': '9527-01'}, {'contents.$': 1, _id: 0} )
当然你还可以使用$redact(2.6版本), 或者mapReduce() リーリー
$redact
mapReduce()
クエリ条件。たとえば名前
それを実装する 1 つの方法: MongoDB の Aggregate を使用します。
1. まず、配列を含むコンテンツに $unwind を適用します
2. 次に、$match を使用してフィルタリング条件を適用します
3. 最後に、$project を使用して必要なフィールドを保持します
以下のコードを参照してください
ご参考までに。
MongoDB を愛してください!
--------------------------ゴージャスなセパレーター--------------------- -- --------
MongoDB 中国語コミュニティには多くのオフライン アクティビティがあります。以下をクリックしてください:
2017 華山剣ディスカッション|MongoDB 中国語コミュニティ
3月には杭州駅が登場します! ! ! 興味のあるお友達は急いで登録してください! ! !
リーリー
まずコメントさせてください:
質問して、を最小限に抑える再現性のあるの問題の例を投稿してください。このような長い文書を投稿すると、誰もがとても読むでしょう。 。
実際に必要なのは、配列全体ではなく、 配列内の特定のドキュメント を返すことです。
1 配列内の要素を 1 つだけ返す必要がある場合
リーリー1行目はクエリ条件、2行目はフィルタ条件です。 演算子はフィルター条件でも使用できることがわかります。ただし、この演算子は条件を満たす最初の要素のみを返します。 には MongoDB バージョン 2.2 以降が必要です 。
または、
$
添字セレクターを使用します:$
下标选择符:上面例子中的查询条件也可以使用
$elemMatch
。如果你需要返回数组中多个匹配的元素:
2
$unwind
通过把
$unwind
来把contents
作为一个独立的文档流来进行操作,代码见@bguo的回答。但是如果你的数组很大,这会导致性能问题。
3
$filter
这是一个
3.2
版本中新出的操作符,用来过滤返回的内容。当然你还可以使用
上記の例のクエリ条件では、$redact
(2.6版本), 或者mapReduce()
リーリー$elemMatch
を使用することもできます。 #🎜🎜# #🎜🎜#配列内の複数の一致する要素を返す必要がある場合: #🎜🎜# #🎜🎜#2$unwind
#🎜🎜# #🎜🎜#$unwind
を使用して、contents
を独立したドキュメント ストリームとして操作します。コードについては、@bguo の回答を参照してください。ただし、配列が大きい場合は、パフォーマンスの問題が発生する可能性があります。 #🎜🎜# #🎜🎜#3
$filter
#🎜🎜# #🎜🎜#これは3.2
バージョンの新しい演算子で、返されたコンテンツをフィルターするために使用されます。 #🎜🎜# リーリー #🎜🎜#もちろん、$redact
(バージョン 2.6)、mapReduce()
、その他多くのメソッドを使用することもできます。 #🎜🎜#クエリ条件。たとえば名前
リーリーそれを実装する 1 つの方法: MongoDB の Aggregate を使用します。
1. まず、配列を含むコンテンツに $unwind を適用します
2. 次に、$match を使用してフィルタリング条件を適用します
3. 最後に、$project を使用して必要なフィールドを保持します
以下のコードを参照してください
リーリーご参考までに。
MongoDB を愛してください!
--------------------------ゴージャスなセパレーター--------------------- -- --------
MongoDB 中国語コミュニティには多くのオフライン アクティビティがあります。以下をクリックしてください:
2017 華山剣ディスカッション|MongoDB 中国語コミュニティ
3月には杭州駅が登場します! ! ! 興味のあるお友達は急いで登録してください! ! !
リーリー