MongoDB で、特定のフィールド値を持つドキュメントを含まない配列でドキュメントを検索する
2023-09-13 11:49:09
質問
私は、特定のフィールド値を持つ少なくとも1つのドキュメントを含まないすべてのドキュメントを見つけようとしています。 たとえば、ここにサンプルのコレクションがあります。
{ _id : 1,
docs : [
{ foo : 1,
bar : 2},
{ foo : 3,
bar : 3}
]
},
{ _id : 2,
docs : [
{ foo : 2,
bar : 2},
{ foo : 3,
bar : 3}
]
}
私は、docsブロックの中に、foo = 1のレコードを少なくとも1つ含まないドキュメントが存在しないすべてのレコードを見つけたいのです。 上記の例では、2番目のドキュメントのみが返される必要があります。
私は以下を試しましたが、それは一致しないものがあるかどうかだけを教えてくれます(これはドキュメント1を返します。
db.collection.find({"docs": { $not: {$elemMatch: {foo: 1 } } } })
UPDATEです。 上のクエリは実際に動作します。何度も起こることですが、私のコードではなく、私のデータが間違っていたのです。
また、私は $nin 演算子 の例も見ましたが、これは配列にプリミティブな値のリストが含まれている場合のみで、 追加のドキュメントを含んでいるわけではありません。 以下のようなものでこれを実行しようとすると、私が欲しい foo フィールドだけでなく、EXACT ドキュメントを探します。
db.collection.find({"docs": { $nin: {'foo':1 } } })
基本的な演算子でこれを実現する方法はないのでしょうか?
どのように解決するのですか?
使用方法
$nin
を使用するとうまくいきますが、構文が正しくありません。 それはそうあるべきです。
db.collection.find({'docs.foo': {$nin: [1]}})
関連
-
[解決済み] MongoDB ドキュメントからフィールドを完全に削除する方法は?
-
[解決済み] 配列フィールドが空でない MongoDB レコードを検索する
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] 特定の値を含む配列で文書を検索する
-
[解決済み] 別のフィールドの値を使って MongoDB のフィールドを更新する
-
[解決済み] MongoDB コレクションのすべてのドキュメントに新しいフィールドを追加する
-
[解決済み】MongoDBでデータのバージョニングを実装する方法
-
[解決済み】Dockerコンテナのディスク使用量を分析する方法
-
[解決済み] MongoDB: フィールドの非存在でドキュメントを検索しますか?
-
[解決済み] mongoがどのポートをリッスンしているか、mongoシェルから見るにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] MongoDBでフィールドが存在することを確認する
-
[解決済み] MongoDB の重複レコードを検索する
-
[解決済み] MongoDB Compass: select distinct フィールド値
-
[解決済み] mongodb サービスが開始されない
-
[解決済み] MongoDBでフィールドが存在することを確認する
-
[解決済み】データベースとしてのNoSQL(MongoDB) vs Lucene(またはSolr)【クローズド
-
[解決済み] MongoDB SELECT COUNT GROUP BY
-
[解決済み】MongoDBをWindowsサービスとして実行するにはどうすればいいですか?
-
[解決済み] mongo グループクエリ フィールドを保持する方法
-
[解決済み] MongoDB集計フレームワーク match OR