根据子文档值搜索mongodb文档

时间:2015-05-24 12:59:17

标签: node.js mongoose

我正在使用mongoosejs并为用户提供如下的MongoDB架构:

{
"_id" : ObjectId("my local id"),
"gravatar" : "user gravatar",
"username" : "users username",
"displayName" : "Shivaraman I",
"provider" : "facebook",
"providerData" : {
    "accessToken" : "facebook access token",
    "work" : [
        user work history
    ],
    "verified" : true,
    "updated_time" : "2015-02-04T13:23:44+0000",
    "timezone" : 1,
    "name" : "Shivaraman Iyer",
    "locale" : "en_GB",
    "link" : "user link",
    "last_name" : "Iyer",
    "gender" : "male",
    "first_name" : "Shivaraman",
    "email" : "email on facebook",
    "education" : [
        facebook user education list
    ],
    "id" : "user's facebook id"
},
...
"lastName" : "Iyer",
"firstName" : "Shivaraman",
}

我想根据id中的他/她的脸书providerData搜索用户。我做了很多搜索,只找到了适用于数组子文档的elemMatch方法。但我需要一些适用于这种子文档格式的东西。

一直在搜索,但没有找到任何东西。任何帮助都会很棒。

谢谢

2 个答案:

答案 0 :(得分:1)

var query = collection.find(); 
query.where('providerData.id', id);

然后执行查询。它将解决问题

答案 1 :(得分:0)

非常简单,你可以使用简单的find(),你可以直接将对象位置作为键及其值作为投影传递。

在你的情况下

db.collection.find({
  "providerData.id":id
});

这会给你结果。

将collection关键字替换为您的收藏名称。