mongo查询中的组成(等同于SQL子查询)

传教士

例如,我有一些收藏。

members
   id
   name
   //other fields we don't care about
emails
   memberid
   //other fields we don't care about

我想删除给定成员的电子邮件。在SQL中,我可以使用嵌套查询,例如;

delete emails
where memberid in (select id from members where name = "evanmcdonnal")

在mongo中,我正在尝试这样的事情;

db.emails.remove( {"memberid":db.members.find( {"name":"evanmcdonnal"}, {id:1, _id:0} ) )

但是它没有返回结果。因此,我接受了嵌套查询并独自运行它。我相信的问题是它又回来了。

{
    "id":"myMadeUpId"
}

假设先执行内部查询,哪一个给我查询;

db.emails.remove( {"memberid":{ "id""myMadeUpId"} )

实际上,我只想要id的值。我试过使用字典和点表示法来访问id的值,但是没有运气。有没有一种方法与我上面的尝试查询类似?

wdberkeley

让我们看看您如何大致翻译

删除成员为的电子邮件(从名称为“ evanmcdonnal”的成员中选择ID)

进入一组mongo shell操作。您可以使用:

db.members.find({ "name" : "evanmcdonnal" }, { "id" : 1 }).forEach(function(doc) {
    db.emails.remove({ "memberid" : doc.id });
});

但是,这确实从中删除了对每个结果文档的查询members您可以将members结果ids放入数组并使用$in

var plzDeleteIds = db.members.find({ "name" : "evanmcdonnal" }, { "id" : 1 }).toArray();
db.emails.remove({ "memberid" : { "$in" : plzDeleteIds } });

但是如果plzDeleteIds变得非常大,那可能是个问题你可以批处理。在所有情况下,我们都需要对数据库执行多个请求,因为我们要查询多个集合,这在MongoDB中始终需要进行多个操作(无论如何从2.6开始)。

在MongoDB中执行此类操作的更惯用的方法是将您需要的成员信息存储在电子邮件文档中的电子邮件集合中(可能作为子文档)。我无法确切地说出是否应该以及如何进行此操作,因为您只给出了显然已经理想化的数据模型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

QueryExecute等同于新查询getPrefix()

来自分类Dev

Join 是否等同于带有列子查询的查询?

来自分类Dev

等同于Pig中的SQL SELECT

来自分类Dev

在SQL Server中包含等同于的

来自分类Dev

等同于“ in”关键字或熊猫子查询

来自分类Dev

NHibernate等同于实体框架“未来查询”

来自分类Dev

Coldfusion Solr搜索-等同于SQL中的LIKE%string%

来自分类Dev

Lambda等同于PHP中的Python

来自分类Dev

等同于车把中的“玉块”

来自分类Dev

等同于Python中的implode(php)

来自分类Dev

等同于Ada中的访问器

来自分类Dev

Mac等同于Linux中的清除?

来自分类Dev

等同于Android中的plist

来自分类Dev

等同于Espresso中的drag()的Robotium?

来自分类Dev

LIKE'xxx%'是否等同于范围查询?LIKE'xxx%'如何使用索引?

来自分类Dev

哪些Django查询集在功能上等同于需要输入的MySQL存储过程?

来自分类Dev

Neo4J Cypher查询等同于选择进行更新

来自分类Dev

Neo4j-在两个不同的图上查询(等同于来自不同数据库的表上的SQl连接)

来自分类Dev

Neo4j-在两个不同的图上查询(等同于来自不同数据库的表上的SQl连接)

来自分类Dev

等同于2个子例程的最佳方法?

来自分类Dev

熊猫:功能等同于SQL的datediff()吗?

来自分类Dev

是否有等同于PostgreSQL的Redgate SQL Compare

来自分类Dev

LINQ to Entities等同于sql“ TOP(n)WITH TIES”

来自分类Dev

MySQL是否等同于MS SQL的TRIGGER_NESTLEVEL()?

来自分类Dev

等同于休眠@Index?

来自分类Dev

Java等同于python的“ with”

来自分类Dev

R等同于Stata *

来自分类Dev

等同于Linux的“屏幕”

来自分类Dev

Swift等同于isnan()?

Related 相关文章

热门标签

归档