Questions tagged «mongodb-query»

该标签用于与通过mongo shell或使用编程语言驱动程序查询和更新MongoDB集合有关的问题。


12
查询数组大小大于1的文档
我有一个MongoDB集合,其中的文件格式如下: { "_id" : ObjectId("4e8ae86d08101908e1000001"), "name" : ["Name"], "zipcode" : ["2223"] } { "_id" : ObjectId("4e8ae86d08101908e1000002"), "name" : ["Another ", "Name"], "zipcode" : ["2224"] } 我目前可以获取与特定数组大小匹配的文档: db.accommodations.find({ name : { $size : 2 }}) 这样可以正确返回name数组中包含2个元素的文档。但是,我不能执行$gt命令返回该name字段的数组大小大于2的所有文档: db.accommodations.find({ name : { $size: { $gt : 1 } }}) 如何选择name尺寸大于一个的数组(最好不必修改当前数据结构)的所有文档?

14
在两个日期之间查找对象MongoDB
我一直在围绕在mongodb中存储推文,每个对象看起来像这样: { "_id" : ObjectId("4c02c58de500fe1be1000005"), "contributors" : null, "text" : "Hello world", "user" : { "following" : null, "followers_count" : 5, "utc_offset" : null, "location" : "", "profile_text_color" : "000000", "friends_count" : 11, "profile_link_color" : "0000ff", "verified" : false, "protected" : false, "url" : null, "contributors_enabled" : false, "created_at" : …

14
仅检索MongoDB集合中对象数组中的查询元素
假设您的收藏夹中包含以下文档: { "_id":ObjectId("562e7c594c12942f08fe4192"), "shapes":[ { "shape":"square", "color":"blue" }, { "shape":"circle", "color":"red" } ] }, { "_id":ObjectId("562e7c594c12942f08fe4193"), "shapes":[ { "shape":"square", "color":"black" }, { "shape":"circle", "color":"green" } ] } 进行查询: db.test.find({"shapes.color": "red"}, {"shapes.color": 1}) 要么 db.test.find({shapes: {"$elemMatch": {color: "red"}}}, {"shapes.color": 1}) 返回匹配的文档(文档1),但始终包含以下所有数组项shapes: { "shapes": [ {"shape": "square", "color": "blue"}, {"shape": "circle", "color": …


26
来自MongoDB的随机记录
我希望从一个巨大的记录(一亿个记录)中获得一个随机记录mongodb。 最快,最有效的方法是什么?数据已经存在,并且没有可以生成随机数并获得随机行的字段。 有什么建议么?




3
如何查询嵌套对象?
使用嵌套对象表示法查询mongoDB时遇到问题: db.messages.find( { headers : { From: "reservations@marriott.com" } } ).count() 0 db.messages.find( { 'headers.From': "reservations@marriott.com" } ).count() 5 我看不到我在做什么错。我期望嵌套对象表示法返回与点表示法查询相同的结果。我哪里错了?

15
如何在mongodb中更新多个数组元素
我有一个包含一系列元素的Mongo文档。 我想重置.handled其中.profile= XX 的数组中所有对象的属性。 该文件的格式如下: { "_id": ObjectId("4d2d8deff4e6c1d71fc29a07"), "user_id": "714638ba-2e08-2168-2b99-00002f3d43c0", "events": [{ "handled": 1, "profile": 10, "data": "....." } { "handled": 1, "profile": 10, "data": "....." } { "handled": 1, "profile": 20, "data": "....." } ... ] } 因此,我尝试了以下方法: .update({"events.profile":10},{$set:{"events.$.handled":0}},false,true) 但是,它仅更新每个文档中的第一个匹配数组元素。(这是$-位置运算符的定义行为。) 如何更新所有匹配的数组元素?

8
mongodb:如果不存在则插入
每天,我都会收到一堆文件(更新)。我想要做的是插入每个尚不存在的项目。 我还想跟踪我第一次插入它们以及上次在更新中看到它们的情况。 我不想有重复的文件。 我不想删除以前已保存但不在我的更新中的文档。 每天有95%(估计)的记录未修改。 我正在使用Python驱动程序(pymongo)。 我目前正在做的是(伪代码): for each document in update: existing_document = collection.find_one(document) if not existing_document: document['insertion_date'] = now else: document = existing_document document['last_update_date'] = now my_collection.save(document) 我的问题是它非常慢(少于10万条记录需要40分钟,而我在更新中有数百万条记录)。我很确定有一些内置函数可以执行此操作,但是update()的文档是mmmhhh ....有点简洁....(http://www.mongodb.org/display/DOCS/Updating) 有人可以建议如何更快地做到吗?

6
包括所有现有字段并向文档添加新字段
我想定义一个$ project聚合阶段,在其中可以指示它添加一个新字段并包括所有现有字段,而不必列出所有现有字段。 我的文档如下所示,其中包含许多字段: { obj: { obj_field1: "hi", obj_field2: "hi2" }, field1: "a", field2: "b", ... field26: "z" } 我想进行这样的聚合操作: [ { $project: { custom_field: "$obj.obj_field1", //the next part is that I don't want to do field1: 1, field2: 1, ... field26: 1 } }, ... //group, match, and whatever... …

5
MongoDB:如何查询字段为空或未设置的记录?
我有一个Email包含sent_at日期字段的文档: { 'sent_at': Date( 1336776254000 ) } 如果Email尚未发送,则该sent_at字段为null或不存在。 我需要获取所有已发送/未发送的计数Emails。我一直试图找出正确的方法来查询此信息。我认为这是获取发送计数的正确方法: db.emails.count({sent_at: {$ne: null}}) 但是我应该如何计算未发送的邮件呢?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.