我正在尝试找到一种方法来防止多个帖子出现在来自同一作者的搜索结果中.到目前为止,我已经尝试过随机评分,这让我可以保持分页.但是,在10个结果的给定页面中,我仍然可以拥有多达4个相同的作者.
有没有办法根据结果集中某个字段出现的次数对文档进行评分?据我所知,你不能在评分脚本中保留变量或对象.
我已经研究了几种实现这一目标的方法,但其中很多都有不少缺点.例如删除重复项,然后再次调用以检索已排除当前作者的新结果集.然而,这也可以返回多个相同的作者.因此,我将逐个查询以替换结果集中的重复作者,这会破坏深层分页,因为最终用于替换重复项的其他结果集会在标准搜索之前耗尽页面.我也尝试过聚合,这是不可寻页的.
是否有任何功能可以根据同一作者(或字段)的文档出现次数来分散或减去文档的分数?
所以基本上我有一个对象,它接受实例并将它们添加到列表中.每个实例都使用虚拟方法,创建实例后我需要覆盖这些方法.我将如何重写实例的方法?
所以我花了一点时间来设置一个带有 SSL 和授权的 repl 集。但是,我最终设置并运行了它,并且可以通过提供适当参数的命令行进行连接。我正在尝试对 mongoose 做同样的事情,但是我在 mongodb 日志中不断收到错误消息,如下所示:AssertionException handling request, closing client connection: 17189 The server is configured to only allow SSL connections
即使我指定了所有 ssl 选项。
我的代码如下:
var m = require('mongoose');
var key = fs.readFileSync('/home/node/mongodb/mongodb.pem');
var ca = [fs.readFileSync('/home/node/mongodb/ca.pem')];
var o = {
server: {
sslValidate:true,
sslCA: ca,
sslKey: key,
sslCert:key
},
user: '****',
pass: '****'
};
m.connect('mongodb://dbAddr/dbName', o)
Run Code Online (Sandbox Code Playgroud)
我试过将 sslValidate 设置为false
,同样的问题。我试过没有 CA、证书和/或密钥的多种组合。当我通过命令行连接时,它需要我提供 CA 和密钥+证书 PEM 文件。所以我认为猫鼬客户端也会需要这些。我已经尝试了server
和replset
具有相同结果的键。我什至指定了 authSource(authDB),尽管看起来这不是问题的一部分,但这仍然会产生相同的结果。
我真的很困惑,尤其是因为我通过mongo
命令做同样的事情没有问题。
我的 …
因此,我一直在为之工作的公司要求我为需要使用.NET访问我们的API的客户公司制作一个C#库.到目前为止,我有一个工作库,但我一直在解析可选属性时遇到问题.我们在后端使用mongoDB,并且mongoDB不存储未提供的属性,即使它们已在模式中定义.
例如,我的架构可能如下所示:
{
name:String,
id:Number,
phone:String,
email:String,
experience:[]
}
Run Code Online (Sandbox Code Playgroud)
我在哪里制作文件:
{
name:"joe",
id:5,
phone:"222-222-2222",
}
Run Code Online (Sandbox Code Playgroud)
性能email
和experience
不要在我的文档存在,所以我的JSON看起来完全如上面显示.但是,这些值不是必需值,但我仍然需要解析其余的值.问题是当我解析上面的代码时我解析所有可能的值email
或experience
解析器抛出一个Null引用异常,并且有充分的理由因为我试图解析的值不存在以及我引用它们的方式值是这样的:
JObject o=JObject.Parse(json); //parse json to JObject json object
string name=(string)o["name"];
int id=(int)o["id"];
string phone=(string)o["phone"];
string email=(string)o["emain"];
List<string> exp=o["experience"].Select(t => (string)t).ToList();
Run Code Online (Sandbox Code Playgroud)
现在我的代码更客观了,我使用LINQ来创建一个被调用的对象Job
和一个Jobs
存储JObject 的对象,您可以使用使用Jobs
原始JSON字符串初始化的对象的方法从中查询某些值.
我想到处理JSON中的可选属性的唯一方法是尝试/捕获每个值.这似乎非常草率,我必须解析的JSON总共约40-50个属性.这似乎是非常缓慢和代码的混乱.我想知道我是否可以实现这是一种更清洁更有效的方式.