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