使用mongodb在sails项目中查询嵌入式集合

时间:2014-06-05 14:30:14

标签: node.js mongodb sails.js node-mongodb-native sails-mongo

我在我的项目中使用sails-mongo,我需要在嵌入式集合中执行一个查询。 我的数据类似于以下内容:

{
    "_id" : ObjectId("53906c6254f36df504e99b8f"),
    "title"    : "my post"
    "comments" : [ 
        {
            "author" : "foo",
            "comment" : "foo comment"
        },
        {
            "author" : "bar",
            "comment" : "bar comment"
        }        
    ],
    "createdAt" : ISODate("2014-06-05T13:10:58.365Z"),
    "updatedAt" : ISODate("2014-06-05T13:10:58.365Z")
}

例如,我需要提取作者comments的{​​{1}} 显然帆还不支持此功能,因此我正在考虑使用mongodb-native的对象foo进行此类查询。
由于sails-mongo使用mongodb-native,我可以在我的sails项目中访问db对象吗?或者我需要使用mongodb-native建立一个新的连接? 如果有人有更好的主意,我会感激不尽。感谢

1 个答案:

答案 0 :(得分:3)

如果您需要做的只是访问嵌入的评论,Waterline应该可以正常工作。只需执行正常findfindOne,就可以在返回的对象上访问注释。

如果您需要查询评论,例如要查找某位作者发表评论的帖子,您可以使用Sails模型类的mongodb-native方法访问基础.native()集合:

Post.native(function(err, collection) {
    if (err) { 
        // handle error getting mongo collection
    }
    collection.find({'comments.author':'foo'}).toArray(function(err, results) {
        // Do something with results
    });
});