簡體   English   中英

如何使用嵌套的Mongodb查詢從集合中獲取數據

[英]How to use nested Mongodb query to fetch data from a collection

我是編寫MongoDb查詢以獲取數據的新手。 我試圖編寫一個嵌套查詢,以從會話集合中獲取用戶數據。

基本上,我正在嘗試獲取db.sessions.passport.user.email 但是我無法獲得所需的值vdipali8@gmail.com

我正在使用的查詢如下:

db.sessions.find({"session.passport.user.email":"vdipali8@gmail" });

以下是我的會話集合:

db.sessions.find().pretty()

{
        "_id" : "xi8sMgfYywLJdoZPpUHKa3Uau3wY",
        "session" : "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"passport\":{\"user\":{\"_id\":\"5750ec592ecb2c0bfb5d39\",\"email\":\"vdipali8@gmail.com\",\"lastName\":\"Vl\",\"firstName\":\"Dipali\",\"facebookid\":\"13596511\",\"__v\":0}}}",
        "expires" : ISODate("2016-06-17T02:47:45.042Z")
}

會話集合是在我的快速節點服務器文件中生成的,如下所示:

app.use(session({ secret: 'keyboard cat', 
    store: new MongoStore({ 
            mongooseConnection: mongoose.connection,
            collection: 'sessions'
        }) 
}));

並且其架構聲明如下:

var SessionSchema = new Schema({
        session: String,
        expires: String
        }, {collection: 'sessions'}
    );

是的,我正在嘗試檢索“電子郵件”以及其他一些字段。

不可能,您查詢的是正確的,但session field is STRING因此您不能在STRING字段的mongodb中使用點運算符。 請把對象放在會話字段中,然后它將起作用。

像這樣

{
    "_id": "xi8sMgfYywLJdoZPpUHKa3Uau3wY",
    "session": {
        "cookie": {
            "originalMaxAge": null,
            "expires": null,
            "httpOnly": true,
            "path": ""
        },
        "passport": {
            "user": {
                "_id": "5750ec592ecb2c0bfb5d39",
                "email": "vdipali8@gmail.com",
                "lastName": "Vl",
                "firstName": "Dipali",
                "facebookid": "13596511",
                "__v": 0
            }
        }
    },
    "expires": ISODate("2016-06-17T02:47:45.042Z")

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM