17

MongoDBのクエリ言語に似たDSLでオブジェクト述語を表現できるJavaScriptライブラリはありますか?大規模なプログラムを明確にするために、次のように言いたいと思います。

var obj = { 
    a: 1, 
    b: 'abcdefg' 
}, qry = { 
    a: { $gt: 0 }, 
    b: /^abc/ 
}; 

if(query(qry).matches(obj)) { 
    // do something appropriate since 
} 

それ以外の:

var obj = { 
    a: 1, 
    b: 'abcdefg' 
}; 
if(obj.a>0 && qry.b.test(obj.b)) { 
    // do something appropriate 
} 

私はNode.jsを使用しているので、NPMのすべてが素晴らしいでしょう。ライブラリが配列からオブジェクトを選択できるだけでなく、個々のオブジェクトを照合できる場合は、追加のボーナスになります。

これらの2つの関連する質問を確認しましたが、私の状況には特に役立ちませんでした。

4

5 に答える 5

18

OK私は答えを見つけました:Sift.js

長い答えのために:これは以前に尋ねられ、答えられました。重要なポイントは次のとおりです。

  • 本当にMongo構文が必要な場合は、Siftを使用してください
  • もっと主流になりたい場合は、他のみんなと同じようにUnderscore.jsを使用してください。基本的に、わずかに異なる構文でsiftが実行することを実行するという事実に加えて、便利な関数のヒープがあります。
  • ライブラリはまったく必要ないかもしれません。最近のブラウザは、たとえば、配列プロトタイプで直接多くの便利な関数をサポートしています。filter()

最後の注意として、mongodb-riffは同様のことをしようとしているように見えますが、現在、ページにはそれが機能しないことが明確に示されています-おそらくそれは放棄されています。しかし、彼のreadmeは少なくとも価値があります:-)、彼は、私には複雑すぎますが、より成熟したように見えるふるい分けとクエリエンジンについて言及しています!

_.find()個人的にはUnderscoreを使用します。これは、初めて調べたので、必要な便利なものが山ほどあることに気付きました。さらに、Underscoreのような単純な機能だけを実行したかったのです。。しかし、より複雑なモンゴのようなクエリを実行したい場合は、Siftを使用してより少ないLOCで実行すると思います。

于 2013-03-20T15:58:18.280 に答える
9

ミンゴをチェック

適切な代替手段が見つからなかったため、実装しました。

まだ活発に開発されていますが、使用可能です。テストカバレッジは完全ではありません。

ブラウザとnodejsの両方から使用可能

[編集]

このライブラリは、フロントエンド用のMongoDBのクエリ言語の最も完全な実装になりました。

于 2013-10-22T15:56:03.810 に答える
2

https://github.com/mirek/node-json-criteriaライブラリはまさにそれを行います-MongoDBクエリ形式を使用してJSONオブジェクトの基準クエリを評価します。

于 2014-10-12T11:12:12.490 に答える
1

lodash.js

lodash.jsを使用します。underscore.jsの代わりになります。パフォーマンスは2倍高速です。

http://lodash.com/

于 2013-08-08T03:20:08.280 に答える
0

私が見つけた最も近いものは、JavaScript用のLINQであるlinq.jsでした。うまくいけば、これはあなたの助けになるでしょう。

于 2013-03-13T23:50:20.317 に答える