[解決済み] Mongooseの$or条件付きfindメソッドが正しく動作しない
2022-05-25 02:23:19
質問
最近、NodejsでMongoDBとMongooseを使うようになりました。
Model.findメソッドに
$or
という条件と
_id
フィールドがある場合、Mongoose は正しく動作しません。
これは動作しません。
User.find({
$or: [
{ '_id': param },
{ 'name': param },
{ 'nickname': param }
]
}, function(err, docs) {
if(!err) res.send(docs);
});
ところで、'_id' の部分を削除すると、これは動作します!
User.find({
$or: [
{ 'name': param },
{ 'nickname': param }
]
}, function(err, docs) {
if(!err) res.send(docs);
});
そして、MongoDBシェルでは、どちらも正常に動作しています。
どのように解決するのですか?
私はググって解決しました。
var ObjectId = require('mongoose').Types.ObjectId;
var objId = new ObjectId( (param.length < 12) ? "123456789012" : param );
// You should make string 'param' as ObjectId type. To avoid exception,
// the 'param' must consist of more than 12 characters.
User.find( { $or:[ {'_id':objId}, {'name':param}, {'nickname':param} ]},
function(err,docs){
if(!err) res.send(docs);
});
関連
-
springboot + mongodbによる緯度経度座標による平坦地マッチング方式
-
MongoDBのログ切り出しの3つの方法のまとめ
-
mongodbでコネクションとログをクリアする正しい方法
-
MongoDBバランサーの使い方を解説
-
MongoDBのloggingモジュールについて説明します。
-
[解決済み] 配列フィールドが空でない MongoDB レコードを検索する
-
[解決済み] 特定の値を含む配列で文書を検索する
-
[解決済み] MongoDBのリレーションシップ:埋め込みか参照か?
-
[解決済み] mongodbで配列の要素を削除する方法は?
-
[解決済み] 終了したらmongooseの接続を適切に終了させること
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
macシステムでのmongoDBデータベースのインストールと設定
-
MongoDBの役割管理について説明する
-
MongoDBのチャンクを説明する
-
[解決済み] mongodb は複数のフィールドで値をグループ化します。
-
[解決済み] コマンドラインからMongoDBデータベースを削除する方法を教えてください。
-
[解決済み] MongoDBのリレーションシップ:埋め込みか参照か?
-
[解決済み] フィールドに文字列が含まれているかどうかをチェックする
-
[解決済み] mongoDBがデータを保存している場所を知るにはどうすればよいですか?(デフォルトの/data/dbにはありません!)
-
[解決済み] Mongoose のエラー Cast to ObjectId failed for value XXX at path "_id" とは何ですか?
-
[解決済み] PyMongoで正規表現クエリを実行する