一直在运行带有Elastic Beanstalk的Docker来部署一个相对简单的应用程序,它一直运行良好.现在ECS即将出现,我很想知道这两种服务之间存在什么差异,以及为什么人们可能会使用另一种服务呢?
这在2.6.1中发生在我身上 - 所以,如果有人徘徊在这个错误中,我想我会写出答案.
第一个命令运行正常,但第二个命令没有.
db.test.find({$text: {$search: 'york'}} )
db.test.find({$text: {$search: 'york'}, score: {$meta: 'textScore'}} )
Run Code Online (Sandbox Code Playgroud)
并抛出下面的错误
{"$err": "Can't canonicalize query: BadValue unknown operator: $meta", "code": 17287}
Run Code Online (Sandbox Code Playgroud) 我相信这是相当明显的,对我来说,如果示例中的第二个双重问号是单个问号会更有意义.
从他们的文档:
或者,你可以使用?字符作为您希望转义的标识符的占位符,如下所示:
var userId = 1;
var columns = ['username', 'email'];
var query = connection.query('SELECT ?? FROM ?? WHERE id = ?', [columns, 'users', userId], function(err, results) {
// ...
});
console.log(query.sql); // SELECT `username`, `email` FROM `users` WHERE id = 1
Run Code Online (Sandbox Code Playgroud) 我正在为我的应用中的商品(产品)制作用户评级(竖起大拇指/竖起大拇指).
我似乎能够通过一组对象实现我想要的东西,但我想知道mongodb是否提供了一种使用数字数组(user_ids)来实现此目的的方法.
db.items.insert({up: 2, down: 3, u_up: [{id: 1}, {id:2}], u_down: [3,4,5]})
db.items.insert({up: 3, down: 3, u_up: [{id: 1}, {id:2}, {id:3}], u_down: [7,8,9]})
db.items.insert({up: 0, down: 0, u_up: [], u_down: []})
db.items.insert({up: 2, down: 2, u_up: [{id:2},{id:3}], u_down: [7,9]})
Run Code Online (Sandbox Code Playgroud)
为了帮助解释我想要做的事情,我已经将u_up(点击了大拇指的用户)实现为一个对象数组,将u_down(已经点击的用户)实现为一组数字.上下字段是该特定产品的上下投票的总运行次数.
只看u_up,如果我运行以下查询,
db.items.find({}, {up: 1, u_up: {$elemMatch: {id: 2}}})
Run Code Online (Sandbox Code Playgroud)
让我回到我想要的东西..用户2的所有四个项目,但只有当用户投票时才填充u_up.所以,我知道他已经对这个特定的项目进行了投票,同时还找回了他没有投票的所有项目.我不想知道查询结果中的其他用户.
{"_id": 2345,"up": 2,
"u_up": [{"id": 2}]}
{"_id": 4432,
"up": 3,
"u_up": [{"id": 2}]}
{"_id": 2345,
"up": 0}
{ "_id": 2345,
"up": 2,
"u_up": [{"id": 2}]}
Run Code Online (Sandbox Code Playgroud)
为每个用户存储整个对象似乎有点浪费,我希望改为使用数组(就像我上面为u_down实现的那样).
mongodb中是否有查询可以实现此目的?或者另外一个会返回一个标志或者某个东西来表示用户已经投票或者已经投票,但是还要退还他没有投票的产品?
谢谢.