2

Sailsjs で mongodb にクエリを実行したい。これは私のデータベースの構造です

{
    "ユーザー": [
        "52ed09e1d015533c124015d5",
        "52ed4bc75ece1fb013fed7f5"
    ]、
    "user_msgs": [
        {
            "送信者": "52ed09e1d015533c124015d5",
            "sendTo": "52ed4bc75ece1fb013fed7f5",
            "msg": "ss"
        }
    ]、
    "createdAt": ISODate("2014-02-06T16:12:17.751Z"),
    "updatedAt": ISODate("2014-02-06T16:12:17.751Z"),
    "_id": ObjectID("52f3b461f46da23c111582f6")
}

配列に一致する「ユーザー」を検索したい

  [
        "52ed09e1d015533c124015d5",
        "52ed4bc75ece1fb013fed7f5"
    ]
Message.find({ユーザー: ["52ed09e1d015533c124015d5","52ed4bc75ece1fb013fed7f5"]})

このクエリは、1 または 2 を含むすべてのオブジェクトを返します。しかし、1 と 2 に正確に一致するオブジェクトのみが必要です。$all なども試しましたが、機能しませんでした。sailsjs がサポートするシンテックスを使用してクエリを作成する方法を教えてください。それらのユーザーを取得する

4

2 に答える 2

1

これには、ネイティブの Mongo アダプターを使用する必要があります。

Message.native(function(err, collection) {

   collection.find({users:{'$all':["52ed09e1d015533c124015d5","52ed4bc75ece1fb013fed7f5"]}}).toArray(function(err, results) {

     // Do something with results

   });

});
于 2014-02-14T18:07:46.187 に答える
-1
Message.find()
.where({users: "52ed09e1d015533c124015d5", "52ed4bc75ece1fb013fed7f5"})
.exec(function(){
  // do something
});

上記のコードは、それらのユーザーだけを取り込むために機能する場合があります。より良い解決策は、メッセージ モデルでユーザー ID を定義することだと思います。

メッセージ モデルに次の属性を追加します。

senderID: {
   type: 'string'
},
receiverID: {
   type: 'string'
}

次のクエリを使用して、そのクエリをより効率的にすることができます。

Message.find()
.where({senderID: "52ed09e1d015533c124015d5"})
.where({receiverID: "52ed4bc75ece1fb013fed7f5"})
.exec(function(){
  // do something
});

これが私がたどるルートです。

于 2014-02-07T03:33:53.040 に答える