在一个ObjectIds数组而不仅仅是一个ObjectId的字段上执行$ lookup的语法是什么?
示例订单文档:
{
_id: ObjectId("..."),
products: [
ObjectId("..<Car ObjectId>.."),
ObjectId("..<Bike ObjectId>..")
]
}
Run Code Online (Sandbox Code Playgroud)
不工作查询:
db.orders.aggregate([
{
$lookup:
{
from: "products",
localField: "products",
foreignField: "_id",
as: "productObjects"
}
}
])
Run Code Online (Sandbox Code Playgroud)
期望的结果
{
_id: ObjectId("..."),
products: [
ObjectId("..<Car ObjectId>.."),
ObjectId("..<Bike ObjectId>..")
],
productObjects: [
{<Car Object>},
{<Bike Object>}
],
}
Run Code Online (Sandbox Code Playgroud) 主要集合是零售商,其中包含商店阵列.每个商店都包含一系列优惠(您可以在这家商店购买).这个提供的数组有一系列的大小.(见下面的例子)
现在我尝试找到所有尺寸可用的优惠L.
{
"_id" : ObjectId("56f277b1279871c20b8b4567"),
"stores" : [
{
"_id" : ObjectId("56f277b5279871c20b8b4783"),
"offers" : [
{
"_id" : ObjectId("56f277b1279871c20b8b4567"),
"size": [
"XS",
"S",
"M"
]
},
{
"_id" : ObjectId("56f277b1279871c20b8b4567"),
"size": [
"S",
"L",
"XL"
]
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
我试过这个查询: db.getCollection('retailers').find({'stores.offers.size': 'L'})
我期待一些像这样的输出:
{
"_id" : ObjectId("56f277b1279871c20b8b4567"),
"stores" : [
{
"_id" : ObjectId("56f277b5279871c20b8b4783"),
"offers" : [
{
"_id" : ObjectId("56f277b1279871c20b8b4567"),
"size": [
"S",
"L",
"XL"
]
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
但我的查询输出还包含与sizeXS,X和M 的不匹配的报价.
我如何强制MongoDB只返回与我的查询匹配的商品? …
在MongoDB中,是否可以转储数据库并将内容还原到其他数据库?例如这样:
mongodump --db db1 --out dumpdir
mongorestore --db db2 --dir dumpdir
Run Code Online (Sandbox Code Playgroud)
但它不起作用.这是错误消息:
构建要从dumpdir目录恢复的集合列表
不知道如何处理子目录"dumpdir/db1",跳过...
DONE
作为bash脚本的一部分,我想检查docker hub上是否存在特别的docker image:tag组合.此外,它将是一个私人存储库.
即伪代码如下:
tag = something
if image:tag already exists on docker hub:
Do nothing
else
Build and push docker image with that tag
Run Code Online (Sandbox Code Playgroud) 我有一个Parse应用程序,我正在尝试将我的应用程序的数据库迁移到mLab上的MongoDB实例.
我已经在Heroku上设置了一个Parse Server分支,我正在使用Heroku的mLab MongoDB附加组件.
我有一个名为mLab的数据库heroku_1ksph3jj,我应该可以使用以下模板连接到它:
mongodb://<dbuser>:<dbpassword>@ds047124.mlab.com:47124/heroku_1ksph3jj
但是,每次尝试都会返回:
Server returned error on SASL authentication step: Authentication failed.
我不确定要替换什么<dbuser>和<dbpassword>用什么.我有一个与我的数据库名称相同的数据库用户:heroku_1ksph3jjz所以我使用了它.我使用该用户的密码代替<dbpassword>.我应该在这里使用其他东西吗?
问题: 我如何在mocha中编写一个post请求测试,测试响应是否匹配?
响应将只是一个url字符串,因为它是第三方服务的重定向.
工作示例有效负载:
curl -H "Content-Type: application/json" -X POST -d '{"participant":{"nuid":"98ASDF988SDF89SDF89989SDF9898"}}' http://localhost:9000/api/members
Run Code Online (Sandbox Code Playgroud)
member.controller.js // post方法
// Creates a new member in the DB.
exports.create = function(req, res) {
Member.findByIdAndUpdate(req.body.participant.nuid,
{ "$setOnInsert": { "_id": req.body.participant.nuid } },
{ "upsert": true },
function(err,doc) {
if (err) throw err;
res.send({
'redirectUrl': req.protocol + '://' + req.get('host') + '/registration/' + req.body.participant.nuid
})
}
);
};
Run Code Online (Sandbox Code Playgroud)
预计res.send
{"redirectUrl":"http://localhost:9000/registration/98ASDF988SDF89SDF89989SDF9898"}
Run Code Online (Sandbox Code Playgroud)
工作示例GET请求测试
var should = require('should');
var app = require('../../app');
var request = require('supertest');
describe('GET /api/members', function() …Run Code Online (Sandbox Code Playgroud) 我希望按ID(56e641d4864e5b780bb992c6和56e65504a323ee0812e511f2)显示产品,并在扣除减价后显示价格(如果有).
我可以使用聚合计算最终价格,但这会返回集合中的所有文档,如何使其仅返回匹配ID
"_id" : ObjectId("56e641d4864e5b780bb992c6"),
"title" : "Keyboard",
"discount" : NumberInt(10),
"price" : NumberInt(1000)
"_id" : ObjectId("56e65504a323ee0812e511f2"),
"title" : "Mouse",
"discount" : NumberInt(0),
"price" : NumberInt(1000)
"_id" : ObjectId("56d90714a48d2eb40cc601a5"),
"title" : "Speaker",
"discount" : NumberInt(10),
"price" : NumberInt(1000)
Run Code Online (Sandbox Code Playgroud)
这是我的疑问
productModel.aggregate([
{
$project: {
title : 1,
price: {
$cond: {
if: {$gt: ["$discount", 0]}, then: {$subtract: ["$price", {$divide: [{$multiply: ["$price", "$discount"]}, 100]}]}, else: "$price"
}
}
}
}
], function(err, docs){
if (err){
console.log(err)
}else{
console.log(docs) …Run Code Online (Sandbox Code Playgroud) 是否可以在Mongo中插入条件;
//Pseudo code
Bulk Insert Item :
If Key exists
Skip, don't throw error
If key does not exist
Add item
Run Code Online (Sandbox Code Playgroud)
如果我执行单个插入,它可能会在集合中返回错误或插入,但是可以批量生成吗?
我将一些草率的XML数据导入Mongo数据库.每个Document都有嵌套的子文档,深度约为5-10.我想找到()具有特定字段特定值的文档,其中字段可能出现在子文档的任何深度(并且可能出现多次).
我目前正在将每个Document拉到Python中,然后搜索该字典,但如果我能说出一个过滤器原型,数据库只会返回其内容中某处具有特定字段名称值的文档,那就太好了.
这是一个示例文档:
{
"foo": 1,
"bar": 2,
"find-this": "Yes!",
"stuff": {
"baz": 3,
"gobble": [
"wibble",
"wobble",
{
"all-fall-down": 4,
"find-this": "please find me"
}
],
"plugh": {
"plove": {
"find-this": "Here too!"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以,我想找到具有"find-this"字段的文档,并且(如果可能的话)能够找到具有"find-this"字段的特定值的文档.
希望这是一个简单的问题.我正在尝试使用es6 import-from样式导入MongoDB.如果我导入使用节点要求它工作正常.
let mongo = require('mongodb');
let MongoClient = mongo.MongoClient;
Run Code Online (Sandbox Code Playgroud)
但是,如果我以es6方式导入它,它会在没有错误或日志的情况下中断.
import {MongoClient} from 'mongodb';
Run Code Online (Sandbox Code Playgroud)
但是在编译/运行时它不会中断它只会在我尝试使用MongoClient执行任何操作时中断.
这是我的Db Manager课程 -
import {MongoClient} from 'mongodb';
export class DbManager {
constructor() {
console.log('Constructing DB Connection');
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行我的服务器时,我从其他管理器和事件中获取了几个日志.
mycomputer myuser$ ./start.sh
Server Constructing
Route Manager Constructing
Initializing Route: Static
Constructing DB Connection
http server started on port: 8000
Run Code Online (Sandbox Code Playgroud)
但是,如果我执行MongoClient的console.log,则根本没有输出.
import {MongoClient} from 'mongodb';
export class DbManager {
constructor() {
console.log('Constructing DB Connection');
console.log(MongoClient);
}
}
Run Code Online (Sandbox Code Playgroud)
输出看起来像这样 -
mycomputer myuser$ ./start.sh
mycomputer myuser$
Run Code Online (Sandbox Code Playgroud)
没有编译错误,所以我不明白为什么这不起作用.此外,我不明白为什么没有任何日志!这是最后发生的事情之一,至少应该记录,直到我想到这一点.如果你想 …
mongodb ×8
node.js ×3
javascript ×2
mongoose ×2
bash ×1
docker ×1
dockerhub ×1
ecmascript-6 ×1
heroku ×1
karma-mocha ×1
mlab ×1
mocha.js ×1
mongorestore ×1
recursion ×1
systemjs ×1