したがって、配列の型に設定されたフィールドを持つコレクションを持つmongoデータベースがあります。long型を含まないMongo dbコレクション内のすべてのドキュメントを配列に戻し、それらの要素の型を変更する方法
{
"_id" : ObjectId("kdsfisdasg924837529dsfhk"),
"myArr" : [
123456
]
}
私は、このコレクションを照会し、長期のデータ型にmyArr
セット内の要素を持っていないすべての文書を、見つけるために探しています。私は掘り下げていましたが、解決策を参照するものは何も見つかりませんでした。私は次のようなものを試していました: db.myCollection.find({myArr: {$not: {$type: "long"}}},{myArr:1, _id: 0})
私が.count()
を渡すと、多数の文書が返されます。私が知っているほとんどすべてのコレクションの文書数は間違っています。私は$not
を間違って使用していると思います。私の構文は間違っていますか?これを解決する別のアプローチがありますか?
UPDATE
私は私が使用してタイプlong
の要素を除いた配列を持つ文書を見つける問題を解決したと考えている:db.myCollection.find({myArr: {$elemMatch: {$not: {$type: "long"}}}}, {myArr:1, _id: 0})
。どのようにして、すべての要素の種類を変更したり変更したりするのですか?long
? Refernce
Imはかなり近い取得するための
。私は上記の関数で返されたドキュメント内の配列thatsを反復処理するために書いたこの関数を変更できると信じています。
db.myCollection.find({myArr: {$elemMatch: {$not: {$type: 18}}}}).forEach(function(myDoc){
for(var i =0; i < myDoc.myArr.length; i++){
print(typeof myDoc.myArr[i]);
}
});
私は '$のexists'と' $ないでAND演算試みた:$タイプ:だけでなく ' "未定義" を、それは私が私が私の解決策を見つけたと信じて同じ'カウント数() ' – mahbad
を返しました。'db.myCollection.find({myArr:{$ not:{$ type:" long}}}}} {{myArr:}}配列要素を反復するために、 1、_id:0})。count() ' – mahbad