社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

mickl

mickl 最近创建的主题
mickl 最近回复了
5 年前
回复了 mickl 创建的主题 » 嵌套对象内的MongoDB查询

你得跑了 $objectToArray 扫描动态键。那你需要 $anyElementTrue 具有 $map Approved 价值:

db.collection.find(
    { 
        $expr: { 
            $anyElementTrue: { 
                $map: { 
                    input: { $objectToArray: "$approvals" },
                    in: { $ne: [ "$$this.v.status", "Approved" ] } 
                }
            } 
        }
})

Mongo Playground

5 年前
回复了 mickl 创建的主题 » 如何从github解析csv?

你必须使用 dataType 作为 text split 使用double for循环将数据获取为JS对象数组:

jQuery.ajax({
    url: "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv",
    type: 'get',
    dataType: 'text',
    success: function(data) {
        let lines = data.split('\n');
        let fields = lines[0].split(',');
        
        let output = [];
        
        for(let i = 1; i < lines.length; i++){
           let current = lines[i].split(',');
           let doc = {};
           for(let j = 0; j < fields.length; j++){
               doc[fields[j]] = current[j];
           }
           output.push(doc);
        }       
        
        console.log(output);
    },
    error: function(jqXHR, textStatus, errorThrow){
        console.log(textStatus);
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

MongoDB 4.2 Updates with Aggregation Pipeline ,请尝试:

db.users.updateMany({}, [ 
    { 
        $addFields: { 
            reputationHistory: { 
                $map: { 
                    input: "$reputationHistory",
                    in: {
                        $mergeObjects: [
                            "$$this",
                            { reason: { $cond: { if: { $eq: [ "$$this.isBid", true ] }, then: "Prediction", else: "Result" } } }
                        ]
                    }
                } 
            } 
        } 
    } 
])

如果你不能升级你可以使用的 $out

db.users.aggregate([ 
    { 
        $addFields: { 
            reputationHistory: { 
                $map: { 
                    input: "$reputationHistory",
                    in: { 
                        reason: { $cond: { if: { $eq: [ "$$this.isBid", true ] }, then: "Prediction", else: "Result" } },
                        isBid: "$$this.isBid",
                        isResult: "$$this.isResult"
                    }
                } 
            } 
        } 
    },
    {
        $out: "users"
    } 
])
6 年前
回复了 mickl 创建的主题 » 如何在MongoDB中从数组中提取对象

使用点符号指定条件:

db.users.updateOne(
    { _id: ObjectId("5cb18680aa024b2d441f93cc") },
    {
        $pull: {
            "friend_requests": {
                "user.id": ObjectId("5cb14fd7db537905c89e0a72")
            }
        }
    });
5 年前
回复了 mickl 创建的主题 » 这是在MongoDB中建立数据模型的正确方法吗?

这里有很多因素可以考虑。首先,您不需要认为每个“实体”都应该有一个单独的集合(如在SQL中),BSON可以处理如下嵌套数组:

{
    Id: cont_01,
    Name: "Thailand",
    ownedBy: userId101
    parentContainer: null,
    Photos: [ { id: "photo_01", "www.unsplash.com/1279178298" }]
}

“加入”( $lookup )MongoDB中的数据是一个额外的开销,所以除非您有充分的理由将其分成多个集合,否则请将其合并。

有了上面这样的数据模型,您就可以使用 $graphLookup 获取父子关系树。

这就是我要开始的。下一步,您可以考虑将用户数据嵌入到每个容器中(非规范化),以避免使用 $lookups user 包含嵌入的容器数组的文档 photos -更难维护(更新有点复杂,比如 here )但更好的阅读性能,因为你不需要查找。

拥有超大文档的缺点也是16MB的文档大小限制,这是一个很大的限制,但最好记住这一点。

6 年前
回复了 mickl 创建的主题 » 如何在MongoDB结果中使用字段值作为键名

你必须使用 $arrayToObject 如果要动态构建密钥。它需要一系列 k v 字段作为参数。让它成为你可以使用的根 $replaceRoot 阶段,尝试:

db.col.aggregate([
    {
        $replaceRoot: {
            newRoot: { $arrayToObject: [ [ { k: "$code", v: "$item" } ] ]}
        }
    }
])

你需要包括你的 eventId 签入查询的条件部分。因为你在用 findByIdAndUpdate 只能通过匹配的单个值 _id 作为条件。所以你必须使用 findOneAndUpdate 要指定自定义筛选条件,请尝试:

UserModel.findOneAndUpdate(
    { _id: userId, "portal.events.eventId": { $ne: req.body.eventId } },
    { $addToSet: { "portal.events": req.body } },
    { new: true }
);
5 年前
回复了 mickl 创建的主题 » 从MongoDB中的objectid获取所有文档和项目时间戳

你可以用 $toDate 操作人员

db.collection.aggregate([
    { $match: { "status": "active" } },
    { $project: { ts: { $toDate: "$_id" } }} 
])

Mongo Playground

6 年前
回复了 mickl 创建的主题 » mongodb:嵌套字符串的查询数组

Dot notation

db.collection.find({ "instock.type": "hello"})

MongoDB playground