[解決済み] 配列フィールドが空でない MongoDB レコードを検索する
2022-02-07 02:33:39
質問
私のすべてのレコードには、"pictures"というフィールドがあります。このフィールドは、文字列の配列です。
私は今、この配列が空でない最新の10レコードが欲しいです。
ググってみたのですが、不思議とこれに関する情報はあまりありません。 私は$whereオプションについて読みましたが、それはネイティブ関数に対してどれくらい遅いのか、そしてより良い解決策があるのか疑問に思っていました。
それでもうまくいきません。
ME.find({$where: 'this.pictures.length > 0'}).sort('-created').limit(10).execFind()
何も返しません。退出
this.pictures
長さビットなしで動作しますが、当然ながら空のレコードも返されます。
解決方法は?
キーがないドキュメントもある場合、使用することができます。
ME.find({ pictures: { $exists: true, $not: {$size: 0} } })
MongoDB は、以下の場合はインデックスを使用しません。
$size
が含まれるため、ここではより良い解決策を紹介します。
ME.find({ pictures: { $exists: true, $ne: [] } })
プロパティが無効な値を持つ可能性がある場合(例えば
null
boolean
など)、さらにチェックを追加します。
を使って
$types
提案どおり
この回答では
:
mongo >=3.2とのこと。
ME.find({ pictures: { $exists: true, $type: 'array', $ne: [] } })
mongoで < 3.2:
ME.find({ pictures: { $exists: true, $type: 4, $ne: [] } })
MongoDB 2.6 リリース以降では、演算子と比較できるようになりました。
$gt
しかし、これは予期しない結果につながる可能性があります(詳しい説明は
この回答で
):
ME.find({ pictures: { $gt: [] } })
関連
-
[解決済み] テスト
-
[解決済み] 配列のサイズが1より大きい文書を検索します。
-
[解決済み] mongoimport : 'error validating settings: positional argument is only one allowed' (設定の検証エラー:位置引数は1つしか許可されません。
-
[解決済み] MongoDBの命名規則とは何ですか?
-
[解決済み] mongodbの最後のN個のレコードを取得する方法は?
-
[解決済み] 特定の値を含む配列で文書を検索する
-
[解決済み] 2 つの日付の間にあるオブジェクトを検索する MongoDB
-
[解決済み] 別のフィールドの値を使って MongoDB のフィールドを更新する
-
[解決済み】mongoコンソールでObjectIdを使用してオブジェクトを検索する方法は?
-
[解決済み] mongodb/mongoose findMany - 配列にリストされたIDを持つすべてのドキュメントを検索する。
最新
-
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 ホットフィックス KB2731284
-
[解決済み] mongodb シェルでドキュメントの値を印刷する
-
[解決済み] mongodb サーバーに接続しようとすると、mongo コマンドが認識されません。
-
[解決済み] or' 条件を含む MongoDB クエリ
-
[解決済み] Mongo で "NOT IN" クエリを実行するにはどうすればいいのですか?
-
[解決済み】MongoDBのシェルで20以上のアイテム(ドキュメント)をプリントアウトする方法は?
-
[解決済み】MongoDB: 1つのフィールドですべてのドキュメントを更新する
-
[解決済み】Node.js Mongoose.js の文字列を ObjectId に変換する関数
-
[解決済み] MongoDb の 2 つのフィールドを比較するクエリ条件