根据子文档值searchmongodb文档

我正在使用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", } 

我想在providerData根据他/她的facebook id来search用户。 我做了很多search,只find了数组子文档的elemMatch方法。 但是我需要的东西适用于这种格式的子文档。

一直在寻找很多,没有find任何东西。 任何帮助将是伟大的。

谢谢

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

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

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

在你的情况

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

这会给你结果。

将集合关键字replace为您的集合名称。