2012-04-18 4 views
6

私はNodejsmongodbデータベースを使用しています。私たちは、unameなどのような法線要素のための単語の上に$nin

このような
Model.find({ uname : { $nin : ["sachin","saurav"] } }.... 

を使用することができます。しかし、オブジェクト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

答えて

9

mongoでの$ ninの動作は、チェックするために値の配列をとることです。

コード: 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

+0

しかし、状況は、文字列str = "nfsdfnskdjnjdf"、 "ksjdngdfg"、 "gseggxfzgd" ....です。これは、2だけでなく多くの内部文字列を持つことができます。あなたが私に言ったように、私は配列を取得します、それを教えてください。ありがとう – user1305989

+0

'var str =" nfsdfnskdjnjdf、ksjdngdfg、gseggxfzgd "; var ids = str.split( "、"); ' // idsは配列を分割することから、 – Menztrual

+0

ありがとう、働いています! – user1305989

5

まだコメントすることができが、しかし、 new ObjectID()が私のために働いていなかったとここに追加したいのですが、new ObjectId()(小文字のd)が機能しました。これが誰かを助けることを望みます。

+0

私はそれ以来、編集とコメントの特権を得ています。だから、このコメントはもう間違いありませんが、受け入れられた答えのコードはコピー/ペースト可能です! – wolstat

関連する問題