7

Nodejsmongodbデータベースを使用しています。$ninこのように 使用できます

Model.find({ uname : { $nin : ["sachin","saurav"] } }....

などの法線要素の上記の言葉uname。しかし、オブジェクト ID(_id) については、..

Model.find({_id : {$nin : ["6534767457dfgbyb23","wtvwt3wy5etvdh"] } } ...

上記の行はエラーを出さず、正しく表示されています..

var ObjectID = require('mongodb').ObjectID;
var a = new ObjectID("sdfsdznfsdz");
var b=new ObjectID("sdfjwneufhq2rfwefsd");
Model.find({_id : { $nin : [a,b] } }...

上記もエラーを出していません...

問題は、a、b、c、d のように手動で書くことができないことです...

これらすべてのa、b、c、d ...をいくつかの変数に正しい形式で保存する必要があり、このようにする必要があります

Model.find({_id : {$nin : variable } }

また

Model.find({_id : {$nin : [variable] } }

私はこれを試しました

var string = a+","+b //this didnt work, error : invalid object id
var string = "nfw34qfhrs9"+","+"u89tgngnfdb"  //this also same error
var string = "\"jn4tr43r\""  +  "," + "\"ansfuw37fe\""  //this also same error 

私は何をすべきか?問題は、それらのアイテム以外のすべてのアイテムを取得する必要があるということです_ids

4

2 に答える 2

12

$ ninがmongoで機能する方法は、チェックするために値の配列を必要とすることです。

コード: var string = a+","+bこれを有効な配列にしません。値を使用して文字列を作成しているときsdfsdznfsdz, u89tgngnfdb

したがって、$ ninは、実装しようとしている方法ではなく、配列をその値として扱います。

必要なことを行うための解決策は、これらの値を使用して配列を作成することです。

だから次のようなもの:

var ids = new Array( new ObjectId("1124edcef241"), new ObjectId("56943decfeca845") );

// Dont put [ ] as a parameter. Just send a variable thats an array     
Model.find( {_id : { $nin : ids } } ); 
...

あなたが配列に関して少しぼんやりしている場合に備えて、私はこれを読むことをお勧めします:

http://www.w3schools.com/js/js_obj_array.asp

于 2012-04-18T11:39:23.137 に答える