2016-08-08 2 views
0

私のループバックアプリケーション用のデータソースとしてMongoDBを使用しています。私は今月のドキュメントを取得する必要があります。ループバックアプリケーションの月間比較のMongoDbクエリ

だから私は、次のことを試してみました午前:

app.models.aaaa.count({ $where : 'return this.Date.getMonth() == 7'}, function(err, res){ 
}); 

今私は年ものuserIdに基づいてフィルタリングします。どのように私はそれのためのクエリを構築することができます。

私は次のことを試してみました:

app.models.aaaa.count({ $where : 'return this.Date.getMonth() == 7 && this.Date.getYear() == 2016'}, function(err, res){ 
    }); 

しかし、唯一のあなたのアイデアを共有month..Pleaseことが確認されます。

[ 
    { 
    "aaaId": "57a84a572b9a79022198c6dd", 
    "bbId": "876hjg786", 
    "Date": "2016-08-08T00:00:00.000Z", 
    "cccc": [ 
     "57a1bfd0c77554fd746a538d'", 
     "57a1bfebc77554fd746a538f" 
    ], 
    "id": "57a85e1d9841c9cb1b100f21" 
    }, 
    { 
    "aaaId": "57a84a572b9a79022198c6dd", 
    "bbId": "876hjg786", 
    "Date": "2016-08-08T00:00:00.000Z", 
    "cccc": [ 
     "57a1bfd0c77554fd746a538d'", 
     "57a1bfebc77554fd746a538f" 
    ], 
    "id": "57a85f1d1605d9f11b4d21b3" 
    } 
] 
+0

データベースにドキュメントの例を挙げることはできますか? –

+0

集約フレームワークを使用できますか?はるかに速くなります。 – evilive

+0

@eviliveあなたはそれのためにいくつかのコードを投稿できますか? – Subburaj

答えて

0

これは動作するはずです:事前に

EDITおかげで、あなただけ$whereを持っている場合、あなただけのただ.count()引数としてJavaScript関数を記述するか、できること

db.myCollection.count( 
    function() { 
    return (this.Date.getMonth() == 7 && this.Date.getYear() == 2016); 
    } 
); 

は注意式は文字列として次のようになります。

db.myCollection.count("this.Date.getMonth() == 7 && this.Date.getYear() == 2016"); 
+0

私は 'AssertionError:where引数はオブジェクトでなければならない'というエラーを受け取っています。 – Subburaj

0

01を使用します。あなただけproject段階でそれらを説明し、元の文書からいくつかのフィールドが必要な場合

{ "_id" : ObjectId("57a86cbe8357264ce0b55b2b"), "m" : 8, "y" : 2016 } 

:プロジェクトのと一致するドキュメントは:

collection.aggregate(
    {$project: { 
    month: {$month: "$Date"}, 
    year: {$year: "$Date"} 
    }}, 
    {$match: {month: 8, year: 2016}} 
); 

あなたはこのような何かを取得します。

whereを使用すると、集約を使用する方がはるかに効率的でなければなりません。