简体   繁体   English

猫鼬在文档中的任何地方

[英]Mongoose find anywhere inside document

i need to find record matching userId. 我需要找到与userId匹配的记录。 the userId can be in any level of document. userId可以位于任何级别的文档中。 It can be in parent level or it can be inside friends array. 它可以在父级中,也可以在friends数组中。

[{
    "_id": "543357620c9af6066e689713",
    "createdDate": "2014-10-06 08:00 pm",
    "cancle": false,
    "eventDate": "2014/12/12",
    "eventstatus": true,
    "location": "chennai",
    "userId": "54334def7e85de48638d1069",
    "createdBy": "four",
    "eventName": "jamba",
    "__v": 0,
    "friends": []
},
{
    "_id": "543356fe0c9af6066e68970c",
    "createdDate": "2014-10-06 07:59 pm",
    "cancle": false,
    "eventDate": "2014/12/12",
    "eventstatus": true,
    "location": "chennai",
    "userId": "54310801e2659ecc3650100b",
    "createdBy": "one",
    "eventName": "tea ",
    "__v": 0,
    "friends": [
        {
            "userId": "54310814e2659ecc3650100c",
            "userName": "two",
            "phoneNumber": "22222222"
        },
        {
            "userId": "54310945e2659ecc3650100d",
            "userName": "three",
            "phoneNumber": "33333333"
        },
        {
            "userId": "54334def7e85de48638d1069",
            "userName": "four",
            "phoneNumber": "44444444"
        }
    ]
}]

i am trying for long time. 我正在尝试很长时间。 Any help is highly appreciated. 非常感谢您的帮助。

You need the $or operator. 您需要$or运算符。 Also, you don't need to iterate to query for elements within an array. 另外,您无需迭代即可查询数组中的元素。 Assuming your collection is named Events : 假设您的收藏集名为Events

Events.find({
    $or: [
        { _id: req.params.userId },
        { 'friends.userId': req.params.userId }
    ]
}).exec();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM