2017-08-13 4 views
-1

私のスキーマがある動作しません。マングースのfindOneは、以下に示すように

{ 
    "status": "200", 
    "message": "Thanks for appreciating our product", 
    "data": { 
     "_id": "5990dd8e669a041fec3aecb9", 
     "users": [ 
      "591325c6b685bc165313a8ff", 
      "591325c6b685bc165313a8ef" 
     ], 
     "no_of_likes": 1 
    } 
} 

今、item_id: 5990dd8e669a041fec3aecb9users:591325c6b685bc165313a8efというfindOneクエリを置くと、正確な文書が得られるはずです。しかし、この場合findOneはdocumetを見つけることができません。私はusersフィールドがref-arrayであると考えています。両方のパラメータを見ることはできません。どうすればこの機能を実現できますか?

+0

'user'ではなく' users'でなければなりません。 – alexmac

+0

はい、私は 'users'を変更しましたが、それでも問題は解決しません。そのために私は質問 –

答えて

1

itemData.item_iduserinfoは両方のIDである場合、あなたはusersが配列であるので、あなたは$inを使用

itemLike.findOne({ 
    _id: itemData.item_id, 
    users: { 
     $in: [userInfo] 
    } 
}).then(...).catch(...); 

を行うだろう。

編集

あなたがitem_idを探しているので、クエリは働いていないのではなく、どこにもあなたのコードでは、item_idを格納します。

あなたの回答を見ると、あなたが探している2つの値が_idusersに格納されていることがわかります。したがって、上記のようにクエリに_idusersを使用してください。

+0

を更新しました$ in userInfoを 'users'の配列で見つけることができません –

+0

@MrugeshThakerチェックを編集します。 – Mikey

関連する問題