我想$lookup在mongodb中添加联接集合.我正在尝试如下
{
$lookup:{
from:"User",
localField:"assignedId",
foreignField:"_id",
as:"dataa"}
}
Run Code Online (Sandbox Code Playgroud)
现在我有两个系列
用户包含objectid的用户喜欢 "_id" : ObjectId("56ab6663d69d2d1100c074db"),
和 任务,其中包含assignedId为string "assignedId":"56ab6663d69d2d1100c074db"
现在,当在两个集合中应用$ lookup时它不起作用,因为Id不匹配.
为此,我用Google搜索并找到了一个包含的解决方案
{ $project: { assignedId: {$toObjectId: "$assignedId"} }}
但这个解决方案不适合我,它抛出一个错误:
assert: command failed: { "ok" : 0, "errmsg" : "invalid operator '$toObjectId'", "code" : 15999 } : aggregate failed
Run Code Online (Sandbox Code Playgroud)
请帮助我如何解决此问题.
谢谢
我发现这很多,我不确定接近它的最佳方法.
我的问题是如何在使用外键查找表或直接在请求它的表中使用查找表值之间做出决定,完全避免查找表关系.
要记住的要点:
使用第二种方法,如果在查找表中更改了数据,则需要对引用数据的所有记录进行批量更新.
这更侧重于有很多列引用许多查找表的表.因此,每次查询表时,许多外键意味着很多连接.
这里有最佳实践,还是需要考虑的关键点?
这段代码应该如何表现?如果我在函数中使用限定名称,它会调用泛型函数忽略我的重载call_read(); 如果我使用非限定名称,它首先调用重载然后调用泛型版本.有什么不同?这是海湾合作委员会的一个错误吗?
#include <iostream>
struct info1 {};
struct info2 {};
template<class T> void read(T& x)
{
std::cout << "generic" << std::endl;
}
template<class T> void call_read(T& x)
{
::read(x); // if I replace ::read(x) with read(x) the overload is called
}
void read(info1& x)
{
std::cout << "overload" << std::endl;
}
int main()
{
info1 x;
info2 y;
call_read(x);
call_read(y);
}
Run Code Online (Sandbox Code Playgroud)
我也注意到它对基本类型有所不同.请参阅下面的代码
#include <iostream>
typedef struct info1 {};
typedef struct info2 {};
typedef int …Run Code Online (Sandbox Code Playgroud) c++ lookup templates language-lawyer argument-dependent-lookup
我正在为PIC微控制器编写一个C程序,它需要做一个非常具体的指数函数.我需要计算以下内容:
A = k.(1 - (p/p0)^ 0.19029)
k和p0是常数,所以除了找到x ^ 0.19029之外,它们都非常简单
(p/p0)比率总是在0-1范围内.
如果我添加math.h并使用power函数,它会很好用,除了耗尽所有可用的16 kB程序存储器.谈论英国媒体报道!(没有电源功能的其余程序= ~20%闪存使用率;添加math.h和电源功能,= 100%).
我希望该程序还可以做其他一些事情.我想知道我是否可以为x ^ 0.19029编写一个特殊的案例实现,可能涉及迭代和某种查找表.
我的想法是为函数x ^ 0.19029生成一个查找表,在0-1范围内可能有10-100个x值.代码将找到一个紧密匹配,然后(不知何故)通过重新缩放查找表值来迭代地改进它.然而,这是我迷失的地方,因为我的小脑无法想象所涉及的数学.
这种方法有用吗?
或者,我已经看过使用Exp(x)和Ln(x),它可以用泰勒展开来实现.b ^ x可以找到:
b ^ x =(e ^(ln b))^ x = e ^(x.ln(b))
(参见:维基百科 - 通过对数的权力)
不过,这看起来有点棘手和复杂.我可能会比编译器的数学库更小的实现,并且我可以根据我的特殊情况简化它(即base = 0-1,exponent始终为0.19029)?
请注意,此刻RAM使用率还可以,但我在Flash上运行不足(用于代码存储).速度并不重要.有人已经建议我使用更大的微处理器和更多的闪存,但这听起来像挥霍无度!
[编辑]当我说"(p/p0)比率总是在0-1"范围内时,我很懒.实际上它永远不会达到0,我昨晚做了一些计算并确定实际上0.3到1的范围就足够了!这意味着下面的一些更简单的解决方案应该是合适的.另外,上面的"k"是44330,我希望最终结果中的误差小于0.1.我猜这意味着(p/p0)^ 0.19029中的误差需要小于1/443300或2.256e-6
我有一个未排序的字符串列表.我可以将这些项放在数组,List,SortedList等等.
我需要找到在此列表中查找字符串的最快方法.我最好将列表转储到数组中,对其进行排序,然后实现二进制搜索?或者框架是否提供了这样做的方法?
谢谢
PS使用VS2008对抗.NET 2.0
当我为约会网站设计MySQL数据库时,我怀疑如何存储引用的数据.目前,该数据库有33个表,并且有近32个不同的字段需要引用.我们还必须考虑许多这些要素需要翻译.
在阅读了几个意见后,我几乎不喜欢使用enum:
CREATE TABLE profile (
'user_id' INT NOT NULL,
...
'relationship_status' ENUM('Single','Married') NOT NULL,
...
);
Run Code Online (Sandbox Code Playgroud)
通常我会使用如下参考表:
CREATE TABLE profile (
'user_id' INT NOT NULL,
...
'relationship_status_id' INT NOT NULL,
...
);
CREATE TABLE relationship_status (
'id' INT NOT NULL,
'name' VARCHAR(45) NOT NULL,
PRIMARY KEY ('id')
);
Run Code Online (Sandbox Code Playgroud)
但是创建32个表可能会被过度杀死所以我正在考虑用PHP编写代码:
class RelationshipStatusLookUp{
const SINGLE = 1;
const MARRIED = 2;
public static function getLabel($status){
if($status == self::SINGLE)
return 'Single';
if($status == self::MARRIED) …Run Code Online (Sandbox Code Playgroud) 我有两个pandas数据帧:df1和df2.
df1有列X和Y以及weeknum.df2具有列Z,weeknum和datetime.
我想基本上保留df1并在其中有一个额外的列,它是相应的daynum日期时间.
我可以使用合并,但必须有一个更清洁的方式,而不必删除列Z.
LUT = np.genfromtxt('test.out', delimiter=',', dtype=float)
LUT:
12, 25, 136, 6743
13, 26, 139, 6786
14, 27, 142, 6791
15, 28, 145, 6789
Run Code Online (Sandbox Code Playgroud)
要从LUT读取的值如下:
x1, x2, x3 = 12.5, 25.5, 137
Run Code Online (Sandbox Code Playgroud)
对于每个给定值(3列)读取LUT中的相邻两个值,我必须对结果进行线性插值(LUT中的第4列).
给定值(x1,x2,x3)属于LUT的第1行和第2行之间.基于此如何读取第1行和第2行之间的结果?
这可能是侮辱性的简单而且值得Nelson Muntz笑,但我有一个真正的脑死亡时刻试图在不同的模型关系中建立多对多的联系.
我有以下型号(简化为您的享受!):
class Document(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey(User, blank=True)
content = models.TextField(blank=True)
private = models.BooleanField(default=False)
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
friends = models.ManyToManyField(User, symmetrical=False,
related_name='user_friends')
ignored = models.ManyToManyField(User, symmetrical=False,
related_name='user_ignored')
Run Code Online (Sandbox Code Playgroud)
成像以下用户:
搜索文档的用户应该生成以下内容:
基本上,我正在精神上努力找出过滤器以返回我上面描述的查询集.有人有任何想法吗?
编辑
感谢Ferdinands的回答,我能够通过他给我的开始坚持到我想要的东西.首先,我们希望得到一个与我结识的人员名单,这是通过多对多关系进行反向查询:
friendly_authors = self.user.user_friends.all()
Run Code Online (Sandbox Code Playgroud)
得到我忽略的所有人:
my_ignored = UserProfile.objects.get(user=self.user).ignored.all()
Run Code Online (Sandbox Code Playgroud)
获取我可以查看的文档列表 - 可以查看,使用或编写文档的文档,这些文档可能是我的朋友,但我没有忽略过:
docs = Document.objects.filter(
(Q(viewable=True) | Q(author=self.user) | Q(author__in=friendly_authors))
& ~Q(author__in=my_ignored)
)
Run Code Online (Sandbox Code Playgroud) 我在C#中使用Lookup类作为我的主要数据容器,供用户从两个Checked List框中选择值.
Lookup类比使用类Dictionary更容易使用,但是我找不到用于删除和向查找类添加值的方法.
我想过使用where和union,但我似乎无法正确使用它.
提前致谢.